如何用Pandas判断某列重复值对应行的另一列是否含特定字符串
解决Pandas按分组标记是否包含特定字符串的问题
核心实现代码
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'X': [1, 1, 2, 2], 'Y': ['Incorrect', 'Correct', 'Incorrect', 'Incorrect'], 'Z': ['A', 'G', 'A', 'G'] }) # 新增布尔值列,标记对应X分组中Y列是否包含"Correct" df['Has Correct in Y?'] = df.groupby('X')['Y'].transform(lambda x: x.str.contains('Correct').any())
代码解释
- 按X列分组:通过
groupby('X')将DataFrame按X列的重复值分组,确保相同X值的行被归为一组处理 - 广播分组结果:
transform方法会将每个分组的计算结果映射回原DataFrame的每一行,保证输出行数与原数据一致 - 检查特定字符串:
x.str.contains('Correct').any()对每个分组的Y列进行检查,判断是否存在任意一行包含目标字符串“Correct”,返回布尔值
执行结果
| X | Y | Z | Has Correct in Y? |
|---|---|---|---|
| 1 | Incorrect | A | True |
| 1 | Correct | G | True |
| 2 | Incorrect | A | False |
| 2 | Incorrect | G | False |
扩展说明
- 若需忽略大小写匹配,可修改为
x.str.contains('Correct', case=False).any() - 若需精确匹配字符串“Correct”(而非包含),替换为
x.eq('Correct').any()
内容的提问来源于stack exchange,提问作者AvocadoToast
相关产品推荐
相关产品推荐

