对特定列的DataFrame合并



我有一个关于数据帧合并的基本问题。在我合并了两个数据帧之后,有没有一种方法可以在结果中只选择几列。

例如:

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']})

result=pd.merge(左,右,开=['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

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

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)
mergeDF = pd.merge(left['key1','key2','A'], right[['key1','key2','C']], on=['key1', 'key2'])

最新更新