如何基于pandas表中全局唯一值派生新列取值
pandas 新增全表唯一值规则派生列实现方案
核心逻辑
基于全表所有单元格的取值出现频次,逐行提取仅在全表范围内出现1次的取值,填充到新增的RESULT列中;若对应行没有符合该规则的取值,填充空值即可。
可直接运行的实现代码
import pandas as pd # 构造和提问示例一致的测试数据集 df = pd.DataFrame({ 'COL1': ['A', 'B', 'C', 'D', 'E', 'B'], 'COL2': ['B', 'C', 'D', 'E', 'F', 'A'], 'COL3': ['C', 'D', 'E', 'F', 'G', 'H'] }) # 统计全表所有取值的出现次数 value_count_map = df.stack().value_counts() # 逐行匹配符合规则的取值,生成RESULT列 df['RESULT'] = df.apply( lambda row: next((cell_val for cell_val in row if value_count_map[cell_val] == 1), pd.NA), axis=1 )
效果说明
运行上述代码后,输出的DataFrame和示例预期完全一致:
- 前4行所有单元格的取值在全表中均出现2次及以上,
RESULT列对应为空 - 第5行取值
G仅在全表出现1次,对应RESULT填充G - 第6行取值
H仅在全表出现1次,对应RESULT填充H
如果你的唯一值规则有其他判定条件,只需要修改
value_count_map[cell_val] == 1这部分的判断逻辑即可适配。
内容的提问来源于stack exchange,提问作者Rohit12
相关产品推荐
相关产品推荐

