pandas df.fillna-在外部联接后用正确的值填充NaN

时间:2018-12-13 16:06:08

标签: python pandas dataframe

我有两个数据框,一起共享一些列。
我正在尝试:

1)将两个数据框合并在一起,即添加不同的列:

diff = df2[df2.columns.difference(df1.columns)]
merged = pd.merge(df1, diff, how='outer', sort=False, on='ID')

到目前为止,一切都按预期进行。

2)现在,将NaN的值替换为df2

的值
merged = merged[~merged.index.duplicated(keep='first')]
merged.fillna(value=df2)

我在这里得到:

pandas.core.indexes.base.InvalidIndexError

我没有任何重复项,也找不到有关什么原因的信息。

2 个答案:

答案 0 :(得分:1)

解决此问题的方法是使用其他方法-combine_first() 这样,缺少数据的每一行都被另一个数据帧中的数据填充,如此处Merging together values within Series or DataFrame columns

答案 1 :(得分:0)

万一由于合并而导致行数发生变化,fillna有时会导致错误。尝试以下方法!

merged.fillna(df2.groupby(level=0).transform("mean"))

related question