You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas对比两个DataFrame列并筛选共有国家数据

解决两个DataFrame保留共有国家数据的问题

现有两个均包含Country列的DataFrame,其中存在彼此独有的国家数据。需过滤掉这些独有国家,使两个DataFrame仅保留双方共有的国家数据。例如,若阿尔及利亚仅在DataFrame A中存在,则删除A中的阿尔及利亚行(B中独有国家同理)。我尝试使用isin方法,得到如下布尔序列,是否正确?后续需移除标记为False的行:

x.Country.isin(y.Country)

83      True
111     True
0       True
4       True
67      True
       ...  
175    False
174    False
130    False
49      True
50      True
Name: Country, Length: 176, dtype: bool

你的思路完全正确!x.Country.isin(y.Country)生成的布尔序列就是用来标记x中哪些国家在y里存在的——True表示该国家是双方共有的,False则是x独有的、需要剔除的条目。

接下来直接用这个布尔序列过滤DataFrame即可:

# 过滤x,只保留双方共有的国家
x_filtered = x[x.Country.isin(y.Country)]

# 同理处理y,保留和x共有的国家
y_filtered = y[y.Country.isin(x.Country)]

这样处理后,两个DataFrame就只会包含彼此都有的国家数据了。如果担心大小写、空格这类细节导致匹配出错,可以先统一处理Country列的格式:

x['Country'] = x['Country'].str.strip().str.lower()
y['Country'] = y['Country'].str.strip().str.lower()

再执行上面的过滤操作,能避免很多不必要的匹配失误。

内容的提问来源于stack exchange,提问作者Yusuf Oddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:57:02