如何并排合并两个数据帧?

Jam*_*ond 22 python pandas

有没有办法方便地并排合并两个数据帧?

两个数据帧都有30行,它们具有不同的列数,例如,df1有20列,df2有40列.

如何轻松获得30行和60列的新数据框?

df3 = pd.someSpecialMergeFunct(df1, df2)
Run Code Online (Sandbox Code Playgroud)

或者可能附加一些特殊参数

df3 = pd.append(df1, df2, left_index=False, right_index=false, how='left')
Run Code Online (Sandbox Code Playgroud)

ps:如果可能的话,我希望可以自动解析复制的列名.

谢谢!

jor*_*ris 41

您可以使用此concat功能(axis=1将连接为colomns):

pd.concat([df1, df2], axis=1)
Run Code Online (Sandbox Code Playgroud)

请参阅有关合并/连接的pandas文档:http://pandas.pydata.org/pandas-docs/stable/merging.html

  • 看看这个链接 - http://chris.friedline.net/2015-12-15-rutgers/lessons/python2/04-merging-data.html.并且在连接之前你可能想要reset_index(),以防你无法并排连接它们.这个答案是对的.但是,我只是想为那些可能在答案后被卡住的人添加一张便条. (8认同)
  • @PallavBakshi 是的,我需要将 `.reset_index(drop=True)` 添加到我已经完成选择以重新对齐行的数据帧。 (3认同)

小智 12

我在尝试实现以下目标时遇到了您的问题:

横向合并数据框

因此,一旦我对数据帧进行切片,我首先确保它们的索引相同。在您的情况下,两个数据帧都需要从 0 到 29 进行索引。然后按索引合并两个数据帧。

df1.reset_index(drop=True).merge(df2.reset_index(drop=True), left_index=True, right_index=True)
Run Code Online (Sandbox Code Playgroud)


tsv*_*iko 6

如果你想组合2个具有共同列名的数据框,你可以执行以下操作:

df_concat = pd.merge(df1, df2, on='common_column_name', how='outer')
Run Code Online (Sandbox Code Playgroud)