我有一个包含n列的数据框df0。 只有一列包含字符串,所有其他列都为空或包含""字符串。
是否可以将数据框折叠到单个列数据框中,对于每一行,我得到非空元素?
DF0:
A B C
1 Car
2 Car
3 Bike
4 Car
5 Train
6 Train
应该给:
1
1 Car
2 Car
3 Bike
4 Car
5 Train
6 Train
答案 0 :(得分:6)
也许:
>>> df.max(axis=1)
1 Car
2 Car
3 Bike
4 Car
5 Train
6 Train
dtype: object
这是Series
,而不是DataFrame
,但您可以使用df.max(axis=1).to_frame(1)
或其他内容制作一个。
答案 1 :(得分:4)
如果它们是空字符串而不是NaN,则可以使用.sum:
In [11]: df.fillna('').sum(1)
Out[11]:
1 Car
2 Car
3 Bike
4 Car
5 Train
6 Train
dtype: object
答案 2 :(得分:1)
这也可行,假设总是有一个非空字符串的列:
df.apply(lambda x: [y for y in x.values if y!=''][0],axis=1)