合并具有相同索引的数据帧列表

时间:2021-07-21 17:45:23

标签: python pandas dataframe

通过在同一行中填充 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

1 个答案:

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