Pandas执行value_counts后如何自动生成新列对评分计数进行分组
实现方案
用pandas的链式调用可以一次性完成统计、列名重命名、缺失评分补0、生成Rating列的全流程,不需要后续手动补列。
完整代码
import pandas as pd # 构造原始数据(实际使用时替换为自己的数据源即可) df = pd.DataFrame({ 'Price Rating': [1,4,3,5,1], 'Food Rating': [1,5,4,5,1], 'Service Rating': [2,5,3,1,5] }) # 核心逻辑 result = df.apply(pd.Series.value_counts) \ .rename(columns=lambda col: f"{col} Count") \ .reindex(range(1, 6), fill_value=0) \ .reset_index(names="Rating")
逻辑说明
df.apply(pd.Series.value_counts):遍历所有列分别做值计数,返回结果的行索引天然就是1~5的评分值rename:批量给列名加Count后缀,匹配目标输出的列名规则reindex:强制保留1~5所有评分行,某评分没有出现时计数自动填充为0,避免行缺失reset_index:把存着评分的索引转成普通列,命名为Rating,直接得到目标结构
如果你的pandas版本低于1.5.0,不支持reset_index的names参数,可以把最后一步替换为.reset_index().rename(columns={'index': 'Rating'})即可。
内容的提问来源于stack exchange,提问作者user1535147
相关产品推荐
相关产品推荐

