我有一个pandas数据帧(df),其中有些行有重复的行。这些重复行中的某些列具有NaN值,而重复行中的类似列具有值。我想合并重复的行,以便将缺少的值替换为重复行中的值,然后删除重复的行。例如,以下是重复的行:
id col1 col2 col3
0 01 abc 123
9 01 xy
结果应该是:
id col1 col2 col3
0 01 abc xy 123
我使用 df.iloc [0:1,] .combo_first(df.iloc [9:10,])尝试 .combine_first ,但没有成功。任何人都可以帮我吗?谢谢!
答案 0 :(得分:1)
我认为您需要groupby
前后填充NaN
,然后drop_duplicates
:
print (df)
id col1 col2 col3
0 1 abc NaN 123.0
9 1 NaN xy NaN
0 2 abc NaN 17.0
9 2 NaN xr NaN
9 2 NaN xu NaN
df = df.groupby('id').apply(lambda x: x.ffill().bfill()).drop_duplicates()
print (df)
id col1 col2 col3
0 1 abc xy 123.0
0 2 abc xr 17.0
9 2 abc xu 17.0