如何基于col1列对比两个DataFrame,保留第二个的特定行?
解决方案
你可以用pandas的isin()方法结合取反操作~快速实现需求,直接筛选出df2中col1值不在df1的col1集合里的行:
import pandas as pd df1 = pd.DataFrame({'col1': ['A', 'B', 'C'], 'col2': [1, 3, 4]}) df2 = pd.DataFrame({'col1': ['A', 'D', 'E', 'F'], 'col2': [2, 5, 6, 7]}) # 筛选目标行 result = df2[~df2['col1'].isin(df1['col1'])] print(result)
运行后输出结果:
col1 col2 1 D 5 2 E 6 3 F 7
补充说明
df2['col1'].isin(df1['col1'])会生成布尔序列,标记df2的col1值是否存在于df1的col1中- 前缀
~用于对布尔值取反,保留那些不在df1中的行 - 这种方法比
merge更高效,尤其适合处理大数据量的情况
如果需要重置结果的索引,可以追加.reset_index(drop=True):
result = df2[~df2['col1'].isin(df1['col1'])].reset_index(drop=True)
内容的提问来源于stack exchange,提问作者Hugoz13
相关产品推荐
相关产品推荐

