You need to enable JavaScript to run this app. R用户学习Python时如何实现Pandas长表转宽表的多列重塑
优惠活动
大模型
产品
解决方案
定价
更多

R用户学习Python时如何实现Pandas长表转宽表的多列重塑

R长表转宽表的Pandas等价实现

核心实现代码

首先定义ID列列表,支持两种方式生成:

  • 手动指定(和R代码逻辑完全一致)
# 把中间的Column3到Column46按实际列名补全即可
id_cols = ['Column1', 'Column2', 'Column3', ..., 'Column46', 'Column47']
  • 自动生成(适合列数较多不想手动输入的场景)
id_cols = [col for col in df_original.columns if 1 <= int(col.lstrip('Column')) <= 47]

无重复ID+分组组合场景

直接用pivot方法实现,和你提供的R代码逻辑完全等价:

df_reshaped = df_original.pivot(
    index=id_cols,
    columns='Column48',
    values='Column49'
).reset_index()

# 可选操作:和R输出的列名格式对齐(生成Column49.Company1这类列名)
df_reshaped.columns.name = None
df_reshaped.columns = [col if col in id_cols else f'Column49.{col}' for col in df_reshaped.columns]

存在重复ID+分组组合场景

如果同一ID组合下存在同一个公司的多条记录,pivot会报错,改用pivot_table指定聚合规则即可:

df_reshaped = df_original.pivot_table(
    index=id_cols,
    columns='Column48',
    values='Column49',
    aggfunc='sum' # 可替换为'mean'、'first'、'max'等符合需求的聚合函数
).reset_index()

# 同样可加上述列名重命名代码对齐R输出格式

参数对应关系

你用到的R reshape参数和Pandas方法的参数对应关系如下:

  • R的idvar → Pandas的index参数
  • R的timevar → Pandas的columns参数
  • R的v.names → Pandas的values参数
  • R的direction = "wide" 对应Pandas pivot/pivot_table 默认的长转宽逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 13:36:08