首页 > 解决方案 > 需要合并两个数据框的两列或同一数据框的两列

问题描述

我有两个数据框。我想组合相同/不同数据框的两个不同列。我在两个数据框中都有不同的列名。

我已经尝试过如下。但输出并不如预期。

import pandas as pd

df1 = pd.DataFrame({
    'A': ['a','a','a'],
    'B': range(3)
})

df2 = pd.DataFrame({
    'C': ['c','c','c'],
    'D': ['4','5','6']
})

df = df1.join(df2)

print (df)

但我预计 df1 的 A 和 B 列下的输出如下所示。

在此处输入图像描述

请看一下并帮助我。

标签: pythonpandas

解决方案


我认为您需要rename在评论中提到@wwnde:

df = df1.append(df2.rename(columns={'C':'A','D':'B'}), ignore_index=True)

或者:

df = pd.concat([df1, df2.rename(columns={'C':'A','D':'B'})], ignore_index=True)

如果需要通过从列名创建的字典动态设置列zip

d = dict(zip(df2.columns, df1.columns))
df = df1.append(df2.rename(columns=d), ignore_index=True)
print (df)
   A  B
0  a  0
1  a  1
2  a  2
3  c  4
4  c  5
5  c  6

编辑:

df1 = pd.DataFrame({ 'A': ['a1','a2','a3'], 'B': range(3), 'C': ['c1','c2','c3'], 'D': ['4','5','6'] })

df = df1[['A','B']].append(df1[['C','D']].rename(columns={'C':'A','D':'B'}), ignore_index=True)
print (df)
    A  B
0  a1  0
1  a2  1
2  a3  2
3  c1  4
4  c2  5
5  c3  6

推荐阅读