繁体   English   中英

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

[英]Merging a list of dataframes with the same index

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

您可以使用functools.reduce重复调用combine_first

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM