如何在 pandas 中连接两个具有不同列名的数据框?-蟒

how to concat two data frames with different column names in pandas? - python

提问人:HappyPy 提问时间:4/29/2016 最后编辑:cs95HappyPy 更新时间:3/12/2021 访问量:91458

问:

df1 = pd.DataFrame({'a':[1,2,3],'x':[4,5,6],'y':[7,8,9]})
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]})

我正在尝试使用中的键合并两个数据框。我想我应该用于此,但是我怎么能告诉熊猫将值放在 的列中。这是我试图实现的输出:df1pd.mergebdf2adf1

    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3   10  13  16
4   11  14  17
5   12  15  18
Python 熊猫 合并

评论


答:

55赞 EdChum 4/29/2016 #1

只需使用 concat重命名列,使其对齐:df2

In [92]:
pd.concat([df1,df2.rename(columns={'b':'a'})], ignore_index=True)

Out[92]:
    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3  10  13  16
4  11  14  17
5  12  15  18

同样,您可以使用,但您需要重命名该列,如上所述:merge

In [103]:
df1.merge(df2.rename(columns={'b':'a'}),how='outer')

Out[103]:
    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3  10  13  16
4  11  14  17
5  12  15  18

评论

0赞 Sakeer 11/7/2023
好东西。你救了我的一天
26赞 scottlittle 12/16/2018 #2

使用 numpy 连接数据帧,因此不必重命名所有列(或显式忽略索引)。 也适用于任意数量的 DataFrame。np.concatenate

df = pd.DataFrame( np.concatenate( (df1.values, df2.values), axis=0 ) )
df.columns = [ 'a', 'x', 'y' ]
df
6赞 Mykola Zotko 3/12/2021 #3

您可以重命名列,然后使用函数或:appendconcat

df2.columns = df1.columns
df1.append(df2, ignore_index=True)
# pd.concat([df1, df2], ignore_index=True)

您还可以将两个数据帧与 from 连接起来,并将生成的 ndarray 转换为 dataframe:vstacknumpy

pd.DataFrame(np.vstack([df1, df2]), columns=df1.columns)