我有两个数据框,一起共享一些列。
我正在尝试:
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
我没有任何重复项,也找不到有关什么原因的信息。
答案 0 :(得分:1)
解决此问题的方法是使用其他方法-combine_first() 这样,缺少数据的每一行都被另一个数据帧中的数据填充,如此处Merging together values within Series or DataFrame columns
答案 1 :(得分:0)
万一由于合并而导致行数发生变化,fillna有时会导致错误。尝试以下方法!
merged.fillna(df2.groupby(level=0).transform("mean"))