如何用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
相关产品推荐
相关产品推荐

