如何合并这两个DataFrame

如何合并这两个DataFrame

import pandas as pd
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                       'A': [1, 2, 3, 4],
                       'B': [1, 2, 3, 4]})
right = pd.DataFrame({'key': ['K0', 'K1'],})
#left df                         #right df
    A   B   key                        key
0   1   1   K0                     0   K0
1   2   2   K1                     1   K1
3   3   3   K2
4   4   4   K3

首先我想创建一个只包含K0,K1的数据帧
first = pd.merge(left, right, on='key')
#first df
    A   B   key
0   1   1   K0
1   2   2   K1

然后我想创建一个只包含K2,K3的数据帧
#Expectation df
    A   B   key
0   3   3   K2
0   4   4   K3

我意识到这应该通过左(右)外部方法来完成,但我对这种方法感到困惑。

最佳答案

使用isin构建布尔掩码:

mask = left['key'].isin(right['key'])

然后使用.loc[mask]根据掩码选择行:
import pandas as pd
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                       'A': [1, 2, 3, 4],
                       'B': [1, 2, 3, 4]})
right = pd.DataFrame({'key': ['K0', 'K1'],})
mask = left['key'].isin(right['key'])
first, second = left.loc[mask], left.loc[~mask]

产量
In [88]: first
Out[88]:
   A  B key
0  1  1  K0
1  2  2  K1

In [89]: second
Out[89]:
   A  B key
2  3  3  K2
3  4  4  K3

关于python - 如何合并这两个DataFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42532003/

10-12 18:28