如何在Pandas DataFrame中将现有列名替换为下方行作为新列名
实现方案(基于Pandas)
假设你的原始DataFrame包含分组标识列(如用户/产品ID)、日期列、目标数值列,可以通过以下步骤完成转换:
1. 生成月份标识列
从日期列中提取月份,生成month1/month2格式的列:
import pandas as pd # 替换成你的DataFrame名和日期列名 df['month'] = 'month' + df['date_column'].dt.month.astype(str)
2. 长表转宽表
根据数据情况选择合适的转换方法:
- 如果同一分组+月份无重复数据,用
pivot:
# 替换成你的分组列名、数值列名 result_df = df.pivot( index='group_column', columns='month', values='value_column' ).reset_index()
- 如果存在重复数据(同一分组+月份有多条记录),用
pivot_table指定聚合方式(比如求和、取均值):
result_df = df.pivot_table( index='group_column', columns='month', values='value_column', aggfunc='sum' # 可替换为'mean'/'max'等 ).reset_index()
3. 调整列顺序(可选)
确保月份列按month1到month5排序:
target_cols = ['group_column'] + [f'month{i}' for i in range(1, 6)] result_df = result_df[target_cols]
补充:处理空值
如果部分月份没有数据,结果中会出现NaN,可以用fillna替换为指定值(比如0):
result_df = result_df.fillna(0)
内容的提问来源于stack exchange,提问作者Pramod Bhat
相关产品推荐
相关产品推荐

