How to collapse Pandas Dataframe Columns and Concatenate Strings

杀马特。学长 韩版系。学妹 提交于 2019-12-07 09:10:06

问题


I have a Data Frame df0 with n columns. Only one of the columns contains a string, all other columns are empty or contain the "" string.

Is it possible to collapse the data frame into a single column data frame where for each row I get the non-empty element?

df0:

    A    B     C
1  Car
2  Car 
3       Bike
4  Car
5            Train
6            Train

should give:

    1    
1  Car
2  Car 
3  Bike
4  Car
5  Train
6  Train

回答1:


Maybe:

>>> df.max(axis=1)
1      Car
2      Car
3     Bike
4      Car
5    Train
6    Train
dtype: object

which is a Series, not a DataFrame, but you could make one using df.max(axis=1).to_frame(1) or something.




回答2:


If they are empty strings rather than NaN you can use .sum:

In [11]: df.fillna('').sum(1)
Out[11]: 
1      Car
2      Car
3     Bike
4      Car
5    Train
6    Train
dtype: object



回答3:


This would also work, under the assumption there's always a column with a non empty string:

 df.apply(lambda x: [y for y in x.values if y!=''][0],axis=1)


来源:https://stackoverflow.com/questions/22491845/how-to-collapse-pandas-dataframe-columns-and-concatenate-strings

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!