我有一个三列的数据框
Col1 Col2 Col3 Col4 Col 5
---------------------------------
Apple None 192 abc None
Banana Banana 89 None bcd
None Cake 892 aaa aaa
我想合并两列,即Col1和Col2以及col1和col5如果一个列中的任何一个都不具有值,则使用该值,如果两者都具有值,则使用该值。 是否可以合并这样的列。
Col1 Col3 Col4
----------------------
Apple 192 abc
Banana 89 bcd
Cake 892 aaa
答案 0 :(得分:2)
使用(如果None是一个字符串,请首先用np.nan
:df=df.replace('None',np.nan)
替换):
df_new=df.ffill().bfill()[['Col1','Col3']]
print(df_new)
Col1 Col3
0 Apple 192
1 Banana 89
2 Banana 892
基于更新:
df.bfill(axis=1)[['Col1','Col3','Col4']]
Col1 Col3 Col4
0 Apple 192 abc
1 Banana 89 bcd
2 Cake 892 aaa
答案 1 :(得分:2)
创建映射dict
,用groupby
做first
d={'Col1':'Col1','Col2':'Col1','Col3':'Col3','Col4':'Col4','Col5':'Col4'}
Yourdf=df.mask(df=='None').groupby(d,axis=1).first()
Out[88]:
Col1 Col3 Col4
0 Apple 192 abc
1 Banana 89 bcd
2 Cake 892 aaa