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

Pandas 1.1.4 实现部分列转成行合并的简洁方案咨询

你可以直接用Pandas内置的pd.wide_to_long函数实现,一行代码就能完成转换,完全兼容你正在使用的1.1.4版本:

final_df = pd.wide_to_long(df.reset_index(), 
                          stubnames=['view', 'click'], 
                          i='Code', 
                          j='type', 
                          sep='_').set_index(['Code', 'type'])

如果不需要把Code和type设置为多级索引,只需要保留为普通列的话,代码还可以更简化:

final_df = pd.wide_to_long(df.reset_index(), 
                          stubnames=['view', 'click'], 
                          i='Code', 
                          j='type', 
                          sep='_')

简单说明

这个函数就是专门处理前缀_后缀格式列名的宽表转长表场景的:

  • stubnames填写列名的公共前缀,这里就是view和click,函数会自动匹配所有对应格式的列
  • j参数指定提取出来的后缀要存在哪个列里,这里我们设为type,自动会取到A、B作为列值
  • sep指定前缀和后缀之间的分隔符,这里就是下划线_
  • 因为你之前已经把Code设为了索引,所以先用reset_index()把它变回普通列方便函数处理,处理完再用set_index改回你需要的多级索引格式即可

相比你现在手动拆分再合并的写法,这个方案扩展性更强,后续如果新增了view_C、click_C这类列,完全不需要修改逻辑,函数会自动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:24:04