我有两个数据框,每个数据框包含两列美国州和城镇。我想在第一个数据框中创建一个新列,该列具有 bool 值,指示与他们的州配对的城镇是否在第二个数据框中。
例子:
df = pd.DataFrame({'countries':['france', 'germany', 'spain', 'uk', 'norway', 'italy'],
'capitals':['paris', 'berlin', 'madrid', 'london', 'oslo', 'rome']})
df2 = pd.DataFrame({'countries':['france', 'spain', 'uk', 'italy'],
'capitals':['paris', 'madrid', 'london', 'rome']})
df
countries capitals
0 france paris
1 germany berlin
2 spain madrid
3 uk london
4 norway oslo
5 italy rome
df2
countries capitals
0 france paris
1 spain madrid
2 uk london
3 italy rome
我想做的是
df> countries capitals bool
france paris True
germany berlin False
spain madrid True
uk london True
norway oslo False
italy rome True
谢谢!
使用指示器执行 FULL OUTER JOIN。
u = df.merge(df2, how='outer', indicator='bool')
u['bool'] = u['bool'] == 'both'
u
countries capitals bool
0 france paris True
1 germany berlin False
2 spain madrid True
3 uk london True
4 norway oslo False
5 italy rome True
在中间步骤中,我们看到
df.merge(df2, how='outer', indicator='bool')
countries capitals bool
0 france paris both
1 germany berlin left_only
2 spain madrid both
3 uk london both
4 norway oslo left_only
5 italy rome both
indicator
指定行所在的位置。我们现在要标记“bool”显示“both”的所有行(以获得预期的输出)。
我是一名优秀的程序员,十分优秀!