基于两个DataFrame多列比较更新replaceFlag列的实现需求
DataFrame匹配标记实现方案
现有数据定义
import pandas as pd df1 = pd.DataFrame({"A": [1, 1, 2, 2, 3, 3, 4], "B": [1, 2, 1, 3, 1, 2, 1]}) df2 = pd.DataFrame({"C": [1, 1, 2, 2, 3], "D": [1, 2, 1, 4, 3]}) df1['replaceFlag'] = pd.NA
需求说明
仅当df1.A与df2.C匹配,但df1.B不在该匹配C对应的所有df2.D值中时,将df1.replaceFlag设为1,其余保持pd.NA。
实现代码
# 构建C对应的有效D值集合 valid_d_groups = df2.groupby('C')['D'].agg(set) # 按条件更新replaceFlag列 df1['replaceFlag'] = df1.apply( lambda x: 1 if x['A'] in valid_d_groups.index and x['B'] not in valid_d_groups[x['A']] else pd.NA, axis=1 )
输出结果
| A | B | replaceFlag |
|---|---|---|
| 1 | 1 | |
| 1 | 2 | |
| 2 | 1 | |
| 2 | 3 | 1 |
| 3 | 1 | 1 |
| 3 | 2 | 1 |
| 4 | 1 |
内容的提问来源于stack exchange,提问作者Rupal
相关产品推荐
相关产品推荐

