如何在Pandas中基于单列扩展特征并合并同年度数据行?
解决方法
你可以用pandas的pivot方法,或是调整pivot_table的参数来实现这个格式转换,具体操作如下:
1. 基础转换(无重复行场景)
假设你的原始DataFrame名为df,直接使用pivot方法指定行索引、列标识和数值来源:
import pandas as pd # 执行转换 result_df = df.pivot( index=['year', 'school'], columns='occupation', values=['a', 'b', 'c'] )
2. 整理列名
上面的代码会生成多层级列名,需要合并成你需要的engineer_a这类格式,同时把索引列还原为普通列:
# 合并多层列名 result_df.columns = [f'{col[1]}_{col[0]}' for col in result_df.columns] # 重置索引 result_df = result_df.reset_index()
3. 处理存在重复行的场景
如果原始数据里,同一year+school+occupation组合有多条记录,用pivot会报错,这时候改用pivot_table并指定聚合逻辑(比如取第一条、求和、求平均,根据你的需求选):
result_df = df.pivot_table( index=['year', 'school'], columns='occupation', values=['a', 'b', 'c'], aggfunc='first' # 这里用first取第一条,也可以换成sum/mean等 ) # 同样整理列名和索引 result_df.columns = [f'{col[1]}_{col[0]}' for col in result_df.columns] result_df = result_df.reset_index()
完成以上步骤后,就能得到你想要的同年度数据合并为单行的DataFrame了。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

