R语言:将仅出现一次的Group观测重编码为Unaffiliated
实现Group变量重编码的方法
先还原你的示例DataFrame:
import pandas as pd df = pd.DataFrame({ 'Observation': [1, 2, 3, 4, 5, 6, 7], 'X1': [2, 6, 8, 1, 2, 7, 2], 'X2': [4, 3, 4, 3, 8, 5, 4], 'Group': [1, 2, 2, 3, 4, 5, 5] })
方法一:用transform快速匹配频次
通过transform('value_counts')给每一行匹配对应Group的出现次数,再用where方法替换符合条件的值:
# 给每行匹配对应Group的出现次数 group_counts = df['Group'].transform('value_counts') # 仅保留出现次数>1的Group,其余替换为"Unaffiliated" df['Group'] = df['Group'].where(group_counts > 1, 'Unaffiliated')
方法二:用map结合频次统计
先统计每个Group的出现次数,再通过lambda函数判断替换:
# 统计各Group的出现次数 counts = df['Group'].value_counts() # 遍历每个Group值,判断后替换 df['Group'] = df['Group'].map(lambda x: x if counts[x] > 1 else 'Unaffiliated')
执行完任意一种方法后,输出的DataFrame就会和你期望的一致:
Observation X1 X2 Group 0 1 2 4 Unaffiliated 1 2 6 3 2 2 3 8 4 2 3 4 1 3 Unaffiliated 4 5 2 8 Unaffiliated 5 6 7 5 5 6 7 2 4 5
内容的提问来源于stack exchange,提问作者flâneur
相关产品推荐
相关产品推荐

