You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame的Rating列拆分,每个值转为单独列?

Pandas实现将Rating列转换为多列

你可以通过透视表的方式实现这个需求,以下是两种常用方法:

方法1:使用pivot方法

pivot适合数据中每个(System name, Rating)组合唯一的场景,直接转换即可:

import pandas as pd

# 原DataFrame创建代码
df = pd.DataFrame(data={
    'System name': ['system1', 'system1', 'system1', 'systemZ', 'systemZ', 'systemZ', 'systemY', 'systemY',
                    'systemY'], 
    'Rating': [1, 2, 3, 1, 2, 3, 1, 2, 3],
    'Count': [12, 156, 16, 77, 56, 66, 99, 77, 99]})

# 执行转换
pivoted_df = df.pivot(index='System name', columns='Rating', values='Count').reset_index()
# 移除列名的层级标签
pivoted_df.columns.name = None

print(pivoted_df)

方法2:使用pivot_table方法

如果你的数据存在重复的(System name, Rating)组合,pivot_table更通用,可通过聚合函数处理重复值:

import pandas as pd

# 原DataFrame创建代码
df = pd.DataFrame(data={
    'System name': ['system1', 'system1', 'system1', 'systemZ', 'systemZ', 'systemZ', 'systemY', 'systemY',
                    'systemY'], 
    'Rating': [1, 2, 3, 1, 2, 3, 1, 2, 3],
    'Count': [12, 156, 16, 77, 56, 66, 99, 77, 99]})

# 执行转换,这里用sum聚合(无重复时不影响结果)
pivoted_df = df.pivot_table(index='System name', columns='Rating', values='Count', aggfunc='sum').reset_index()
pivoted_df.columns.name = None

print(pivoted_df)

运行结果

两种方法都会输出如下表格:

System name123
system11215616
systemZ775666
systemY997799

内容的提问来源于stack exchange,提问作者Franck Dernoncourt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:05:12