Python实现两个DataFrame多条件匹配筛选异常值的方法
Pandas跨表匹配处理实现代码
import pandas as pd # -------------------------- 示例测试数据(替换为你的实际df1、df2即可) -------------------------- df1 = pd.DataFrame({'Column A': ['CharlesBarkley', 'Michael Jordan']}) df2 = pd.DataFrame({ 'Column A': ['charles barkley', 'MichaelJordan'], 'Column B': ['Yes', 'No'] }) # -------------------------- 核心处理逻辑 -------------------------- # 1. 对两个表的Column A做标准化:删除所有空格+统一转小写 df1['std_A'] = df1['Column A'].astype(str).str.replace(r'\s+', '', regex=True).str.lower() df2['std_A'] = df2['Column A'].astype(str).str.replace(r'\s+', '', regex=True).str.lower() # 2. 匹配+过滤:保留匹配成功、且df2 Column B为No的行 result_df = df2[(df2['std_A'].isin(df1['std_A'])) & (df2['Column B'] == 'No')].copy() # 3. 新增Result列,保留所需输出字段 result_df['Result'] = 'Not Registered' result_df = result_df[['std_A', 'Result']] # 输出结果 print(result_df)
逻辑说明
- 标准化处理时加入
astype(str)避免列值非字符串时报错,\s+正则匹配所有任意数量的空白字符,比直接替换单个空格兼容性更强 - 匹配逻辑用
isin()实现两表标准化字段的对齐,过滤条件直接叠加布尔索引即可 copy()方法避免后续操作触发pandas链式赋值警告
内容的提问来源于stack exchange,提问作者LEO MODE
相关产品推荐
相关产品推荐

