如何使用Pandas将DataFrame内名称值转为唯一列标题并匹配对应日期索引数值
实现方法
你需要完成的是长格式DataFrame转宽格式的操作,Pandas有多种简便实现方式,以下是常用可行方案:
方法1:使用pivot方法(无重复日期+名称组合时推荐)
假设你的原始DataFrame命名为df,存储类别名称的列名为名称,存储对应数值的列名为数值,直接执行以下代码即可:
# 直接将名称字段值转为列标题,保留原有日期索引 result_df = df.pivot(columns='名称', values='数值') # 若需要把空匹配位置的缺失值填充为0,可修改为下行代码 # result_df = df.pivot(columns='名称', values='数值').fillna(0)
方法2:使用pivot_table方法(存在重复日期+名称组合需聚合时推荐)
如果同一日期下同一个名称存在多条数值记录,需要先做聚合再转宽表,可以用pivot_table指定聚合规则:
# 示例为对重复值求和,可根据需求修改aggfunc参数为'mean'/'max'/'count'等 result_df = df.pivot_table(columns='名称', values='数值', aggfunc='sum')
方法3:使用多级索引+unstack实现
你也可以将名称列追加为二级索引后调用unstack方法完成转置:
result_df = df.set_index('名称', append=True)['数值'].unstack(level='名称')
内容的提问来源于stack exchange,提问作者PythonCoder_
相关产品推荐
相关产品推荐

