让我们说我在列表中有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)。
任何帮助都会很棒!谢谢:)
答案 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