通过在同一行中填充 NaN 值列,我会将数据框列表合并为一个列表。数据帧也具有相同的索引。
df
A B
0 Red Blue
1 Green Red
df1
A B Value1 Value2
0 Red Blue 1.0 NaN
1 Green Red NaN 0.2
df2
A B Value1 Value2
1 Green Red 3.0 NaN
0 Red Blue NaN 0.15
代码
df_list = [df1, df2]
df_final = pd.merge(df, df_list, left_index=True, right_index=True)
但是得到这个错误TypeError: Can only merge Series or DataFrame objects, a <class 'list'> was passed
预期输出
A B Value1 Value2
0 Red Blue 1 0.15
1 Green Red 3 0.20
答案 0 :(得分:2)
您可以使用 combine_first
重复调用 functools.reduce
:
from functools import reduce
df_final = reduce(pd.DataFrame.combine_first, df_list, df)
以 df
开始作为初始值,然后用来自 combine_first
的帧累积调用 df_list
以给出最终帧。
>>> df_final
A B Value1 Value2
0 Red Blue 1.0 0.15
1 Green Red 3.0 0.20