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

如何用Python的pandas将数据集单列转换为多列(行转列)

用Python将单列转换为多列(长格式转宽格式)

这个需求本质就是把长格式数据转成宽格式,用Python的pandas库就能轻松搞定,我给你一步步拆解实操:

1. 先准备示例数据

先把你给出的数据集用pandas构造出来:

import pandas as pd

# 创建符合需求的示例DataFrame
df = pd.DataFrame({
    'user_id': [1, 1, 1],
    'info_name': ['a', 'b', 'c'],
    'score': ['50%', '75%', '100%']
})

2. 用pivot方法完成转换

pandas的pivot方法专门处理这种行列转换,参数逻辑非常直观:

  • index:指定作为行唯一标识的列(这里是user_id,保证同一用户只占一行)
  • columns:要转成新列名的列(这里是info_name)
  • values:对应填充到新列中的数据(这里是score)

代码如下:

# 执行透视转换
pivoted_df = df.pivot(index='user_id', columns='info_name', values='score').reset_index()
# 去掉列名的层级标签,让输出格式更干净
pivoted_df.columns.name = None

运行后得到的结果完全符合你的要求:

user_id     a     b      c
0        1  50%  75%  100%

3. 特殊情况处理:存在重复组合的场景

如果你的数据里,同一个user_id+info_name有多个对应的score(比如同一用户同一指标有多次记录),直接用pivot会报错,这时候可以用pivot_table,还能指定聚合规则:

# 构造带重复数据的示例
df_dup = pd.DataFrame({
    'user_id': [1,1,1,1],
    'info_name': ['a','a','b','c'],
    'score': ['50%','60%','75%','100%']
})

# 用pivot_table处理重复,这里以取第一个值为例
pivoted_dup_df = df_dup.pivot_table(
    index='user_id',
    columns='info_name',
    values='score',
    aggfunc='first'  # 可根据需求换成'mean'、'sum'、'join'等聚合方式
).reset_index()
pivoted_dup_df.columns.name = None

这样就能灵活应对各种数据情况啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:00:43