Python中如何根据列值将表格重组为多列结构?
解决方法:将长格式数据转为宽格式(透视表)
你需要的是数据透视操作,pd.get_dummies是用来生成独热编码的,只会输出0/1标记类别是否存在,无法填充对应的value值,所以不适用这个场景。正确的做法是用pandas的pivot或pivot_table方法:
核心实现代码
假设你的原始DataFrame名为df,直接使用pivot方法完成转换:
import pandas as pd # 执行透视:以row_index为行,new_column的取值为列,填充对应的value pivoted_df = df.pivot( index='row_index', columns='new_column', values='value' ).reset_index() # 移除列索引的名称(可选,让结果更整洁) pivoted_df.columns.name = None
处理重复值场景
如果同一个row_index和new_column的组合存在多个value,pivot会抛出错误。这时候改用pivot_table,指定聚合函数来处理重复值:
# 示例:取重复组合中的第一个值,也可以用sum/mean等聚合方式 pivoted_df = df.pivot_table( index='row_index', columns='new_column', values='value', aggfunc='first' # 可替换为'sum'/'mean'等 ).reset_index() pivoted_df.columns.name = None
效果示例
原始数据:
| row_index | value | new_column |
|---|---|---|
| 1 | 手机 | DeviceType |
| 1 | 电商 | Business |
| 2 | 电脑 | DeviceType |
| 2 | 教育 | Business |
转换后结果:
| row_index | DeviceType | Business |
|---|---|---|
| 1 | 手机 | 电商 |
| 2 | 电脑 | 教育 |
内容的提问来源于stack exchange,提问作者Anmol Kumar
相关产品推荐
相关产品推荐

