Pandas:如何连接具有不同列的数据框?

gmo*_*lau 10 python dataframe pandas

我试图在官方Pandas 文档中找到答案,但发现它比帮助更令人困惑。基本上我有两个具有重叠但不相同的列列表的数据框:

df1:
   A   B
0  22  34
1  78  42

df2:
   B   C
0  76  29
1  11  67
Run Code Online (Sandbox Code Playgroud)

我想合并/连接/附加它们,以便结果是

df3:
   A   B   C
0  22  34  nan
1  78  42  nan
2  nan 76  29
3  nan 11  67
Run Code Online (Sandbox Code Playgroud)

应该相当简单,但我尝试了几种直观的方法,但总是出错。有谁能够帮助我?

Vai*_*ali 10

您需要与参数 how = outer 合并

df3 = df1.merge(df2, how = 'outer')

    A       B   C
0   22.0    34  NaN
1   78.0    42  NaN
2   NaN     76  29.0
3   NaN     11  67.0
Run Code Online (Sandbox Code Playgroud)


Sco*_*ton 10

如果您只想连接可以使用的数据帧。

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

输出:

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
0   NaN  76  11.0
1   NaN  11  67.0
Run Code Online (Sandbox Code Playgroud)

然后你可以 reset_index 重新创建一个简单的递增索引。

pd.concat([df,df2]).reset_index(drop = True)
Run Code Online (Sandbox Code Playgroud)

输出:

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
2   NaN  76  11.0
3   NaN  11  67.0
Run Code Online (Sandbox Code Playgroud)

  • 合并就像 SQL 连接一样,您在其中查找重叠的行并为每个重叠的行取回一行,其中外部返回来自两个数据帧的所有记录,但如果存在重叠的行基本连接条件,则它将生成一行. pd.concat,简单地将两个数据帧堆叠在一起。没有加入即...没有寻找重叠的行。 (3认同)