在R中对比行数不同的DataFrame,找出merged相对merged2013缺失的国家
找出DataFrame中缺失的国家
嘿,我完全懂你的需求——要从merged2013里定位那些在merged中缺失的国家,之前得到一堆"1"的结果确实不是你想要的。下面给你两个更贴合需求的实现方案,直接就能拿到清晰的结果:
方法1:用merge的indicator参数(保留完整行数据)
这个方法会帮你直观看到匹配状态,还能保留merged2013里对应国家的所有列数据:
# 替换成你的实际国家列名称,比如'Country' country_col = '国家列名' # 左连接两个DataFrame,添加匹配状态列 merged_result = merged2013.merge(merged, on=country_col, how='left', indicator=True) # 筛选出仅在merged2013中存在的行(也就是merged缺失的国家) missing_countries_df = merged_result[merged_result['_merge'] == 'left_only'] # 如果只需要国家名称列表,直接提取 missing_countries_list = missing_countries_df[country_col].tolist()
这样你得到的missing_countries_df就是包含所有缺失国家完整数据的DataFrame,一目了然。
方法2:用isin()做快速筛选(简洁高效)
如果只需要快速定位缺失的国家,这个方法更简洁:
country_col = '国家列名' # 直接筛选出merged2013中不在merged里的国家行 missing_countries_df = merged2013[~merged2013[country_col].isin(merged[country_col])] # 提取国家名称列表 missing_countries_list = missing_countries_df[country_col].tolist()
这里的~是取反操作,意思是“排除掉在merged里存在的国家”,直接得到目标结果。
这两种方法都不会返回多余的"1",完全贴合你要的“列出缺失国家”的需求,你可以根据是否需要保留原DataFrame的其他列来选择~
内容的提问来源于stack exchange,提问作者Frank Doe
相关产品推荐
相关产品推荐

