是否可以根据列名合并两个熊猫数据框?

时间:2021-05-24 16:44:54

标签: python pandas dataframe

我有两个数据框:

left = pd.DataFrame(
        {
            "Col": ["D", "C", "B", "A"],
        },
    )
right = pd.DataFrame(
        {
            "A": ["A0"],
            "B": ["B0"],
            "C": ["C0"],
            "D": ["D0"],
        },
    )

是否可以根据左侧的 col 和右侧的列名合并它们?

我需要得到以下结果:

result = pd.DataFrame(
        {
            "Col": ["D", "C", "B", "A"],
            "Val": ["D0", "C0", "B0", "A0"],
        },
    )

2 个答案:

答案 0 :(得分:2)

您可以使用非常简单的 .map

In [319]: left['Val'] = left['Col'].map(right.T[0])

In [320]: left
Out[320]:
  Col Val
0   D  D0
1   C  C0
2   B  B0
3   A  A0

答案 1 :(得分:1)

试试 join 与换位(Ttranspose()):

import pandas as pd

left = pd.DataFrame({
    "Col": ["D", "C", "B", "A"],
})
right = pd.DataFrame({
    "A": ["A0"],
    "B": ["B0"],
    "C": ["C0"],
    "D": ["D0"],
})

new_df = left.join(right.T, on='Col').rename(columns={0: 'Val'})
print(new_df)

new_df

  Col Val
0   D  D0
1   C  C0
2   B  B0
3   A  A0