如何使用Pandas反转DataFrame中的客户反馈评分值?
如何用Pandas反转1-5的评分体系
嘿,这个需求挺常见的,用Pandas有几种简单高效的方法可以实现,我给你详细说说:
方法一:利用数学公式(最简洁)
因为你的评分是1-5的线性区间,反转逻辑刚好可以用6减去原评分来实现:
- 5分 → 6-5=1分
- 4分 → 6-4=2分
- 3分 → 6-3=3分(保持不变)
- 2分 → 6-2=4分(顺带也处理了反向情况)
- 1分 → 6-1=5分
代码示例:
import pandas as pd # 假设你的数据框是df,评分列名为'review_score' df['reversed_score'] = 6 - df['review_score']
这个方法的优势是代码极简,不需要额外创建映射表,适合这种规则固定的线性反转场景。
方法二:使用map函数(更灵活)
如果以后你的反转规则有变化(比如不是完全线性反转),可以用字典映射的方式,可读性更强也更灵活:
首先创建一个评分映射字典,然后用map()方法批量转换:
# 创建反转映射字典 score_mapping = {1:5, 2:4, 3:3, 4:2, 5:1} # 应用映射 df['reversed_score'] = df['review_score'].map(score_mapping)
这个方法的好处是逻辑清晰,如果后续需要调整反转规则,直接修改字典里的键值对就行,维护起来更方便。
测试示例
你可以用下面的代码快速验证效果:
# 创建测试数据 test_data = pd.DataFrame({'review_score': [1,2,3,4,5]}) # 用方法一添加反转评分 test_data['reversed_score'] = 6 - test_data['review_score'] print(test_data)
输出结果会是:
review_score reversed_score 0 1 5 1 2 4 2 3 3 3 4 2 4 5 1
完全符合你的需求~
内容的提问来源于stack exchange,提问作者Lars UK
相关产品推荐
相关产品推荐

