【问题标题】:DataFrame merge for on specific columns特定列上的 DataFrame 合并
【发布时间】:2022-01-24 23:16:27
【问题描述】:

我有一个关于数据框合并的基本问题。在我合并两个数据框后,有没有办法在结果中只选择几列。

例如:

left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                    'key2': ['K0', 'K1', 'K0', 'K1'],
                     'A': ['A0', 'A1', 'A2', 'A3'],
                     'B': ['B0', 'B1', 'B2', 'B3']})


right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                          'key2': ['K0', 'K0', 'K0', 'K0'],
                          'C': ['C0', 'C1', 'C2', 'C3'],
                          'D': ['D0', 'D1', 'D2', 'D3']})

结果 = pd.merge(left, right, on=['key1', 'key2'])

结果:

    A   B key1 key2   C   D
0  A0  B0   K0   K0  C0  D0
1  A2  B2   K1   K0  C1  D1
2  A2  B2   K1   K0  C2  D2
None

有没有办法我只能从“右”数据框中选择“C”列,从左数据框中选择“A”列?例如,我希望我的结果是这样的:

    A     key1  key2   C  
0  A0    K0    K0     C0  
1  A2    K1    K0     C1  
2  A2    K1    K0     C2  
None

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    当然,首先过滤必要的列 + 用于连接的列:

    result = pd.merge(left[['A','key1', 'key2']], 
                      right[['C','key1', 'key2']], 
                      on=['key1', 'key2'])
    

    或者:

    keys = ['key1', 'key2']
    result = pd.merge(left[['A'] + keys], right[['C'] + keys], on=keys)
    

    【讨论】:

      【解决方案2】:
      mergeDF = pd.merge(left['key1','key2','A'], right[['key1','key2','C']], on=['key1', 'key2'])
      

      【讨论】:

        猜你喜欢
        • 2018-10-02
        • 1970-01-01
        • 2018-05-09
        • 1970-01-01
        • 2013-09-21
        • 2022-11-20
        • 2020-06-15
        • 2018-06-15
        • 1970-01-01
        相关资源
        最近更新 更多