如何重塑DataFrame:将多行日期与结果按索引聚合展开为多列
实现方案
你可以通过分组打标+宽表转换的方式完成需求,适配不同index对应不同记录条数的场景,示例代码如下:
import pandas as pd # 假设你的原始DataFrame变量名为df # 1. 先把日期列转为时间格式按日期升序排序,避免字符串排序逻辑出错 df['date'] = pd.to_datetime(df['date'], format='%d/%m/%Y') df = df.sort_values(by=['index', 'date']).reset_index(drop=True) # 2. 给每个index下的记录生成序号 df['day_seq'] = df.groupby('index').cumcount() + 1 # 3. 长表转宽表 df_wide = df.pivot(index='index', columns='day_seq', values=['date', 'result']) # 4. 格式化列名 df_wide.columns = [f'date_{seq}' if col == 'date' else f'result_day_{seq}' for col, seq in df_wide.columns] # 5. 恢复日期的原字符串格式,空值填充为NA for date_col in [c for c in df_wide.columns if c.startswith('date_')]: df_wide[date_col] = df_wide[date_col].dt.strftime('%d/%m/%Y') df_wide = df_wide.reset_index().fillna('NA')
执行完上述代码后df_wide就是你需要的结果格式。
内容的提问来源于stack exchange,提问作者Billy Jones
相关产品推荐
相关产品推荐

