Pandas多索引透视表:按评级计算列值的日期差减法需求
Pandas双索引透视表按评级计算日期差值
实现步骤
- 将双索引透视表重置为普通列结构,便于分组操作
- 按
Rating字段分组,确保每个评级的数据独立计算 - 对每个分组内的数据按
Date排序,保证日期顺序从旧到新 - 使用
diff()方法计算每列差值,该方法默认以后续行(新日期)的值减去前行(旧日期)的值,完全匹配需求
代码实现
假设你的透视表DataFrame名为pivot_df,代码如下:
# 重置双索引为普通列 df = pivot_df.reset_index() # 按Rating分组,排序后计算差值 result_df = df.groupby('Rating').apply( lambda group: group.sort_values('Date')[['A', 'B', 'C']].diff() ).reset_index() # 可选:还原为原双索引结构 result_df = result_df.set_index(['Rating', 'Date'])
结果说明
- 计算完成后,每个评级下的每一列都会得到对应日期的差值,比如评级M的列A在2007/01/03与2007/01/02的差值会得到
-0.0077,与示例一致 - 每个评级分组的第一行差值为
NaN,因为没有更早的日期作为计算基准
内容的提问来源于stack exchange,提问作者Michael W
相关产品推荐
相关产品推荐

