合并特定列上的DataFrames列表

时间:2018-09-09 11:35:22

标签: python-3.x pandas

让我们说我在列表中有3个DataFrame: df_list = [df1,df2,df3]

每个DataFrame如下所示:

df1

puid  ean  color  temp  material 
1111  foob blue   12    metal

df2

puid  ean  color  weight
2222  bazb red    45

df3

puid  ean  height  length  weight
3333  booz 123     344     12

您会注意到,每个字段中都有唯一的列名。我需要一种将这三个DataFrame合并在一起的方法,以便合并的DataFrame看起来像这样:

合并的DF

puid  ean  color  temp  material  weight  length  height
1111  foob blue   12    metal     NaN     NaN     NaN
2222  bazb red    NaN   NaN       45      NaN     NaN
3333  booz NaN    NaN   NaN       12      344     123

列的顺序不是很重要;但至少应从puid开始。

我尝试使用:pd.concat(df_list, axis=1) 但它只会产生一个级联的数据帧(意外惊喜)

也尝试使用:reduce(lambda x, y: pd.merge(x, y, on = 'puid'), df_list),但是由于某种原因,我返回了一个空的数据框,并且无法正确合并(例如,保留color_x,color_y)。

任何帮助都会很棒!谢谢:)

1 个答案:

答案 0 :(得分:1)

您说pd.concat(axis=1)不起作用,但是pd.concat((df1,df2,df3))起作用:

  color   ean  height  length material  puid  temp  weight
0  blue  foob     NaN     NaN    metal  1111  12.0     NaN
0   red  bazb     NaN     NaN      NaN  2222   NaN    45.0
0   NaN  booz   123.0   344.0      NaN  3333   NaN    12.0