.combine_first用于合并多行

时间:2018-02-21 09:40:06

标签: python pandas

我有一个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 ,但没有成功。任何人都可以帮我吗?谢谢!

1 个答案:

答案 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