You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在反转时序DataFrame后保持顺序执行groupby操作?

解决方案:保持反转时序数据的分组顺序

问题出在groupby默认会对分组键进行排序,导致结果回到原顺序。要在反转数据的状态下完成分组累加,只需在groupby时添加sort=False参数,阻止分组键自动排序即可。

修改后的代码

x = ts.loc[::-1, "column_1"].eq(0)
# 添加sort=False,保留数据中分组的出现顺序
result = x.groupby(pd.Grouper(freq="M"), sort=False).cumsum().head(35)

原理说明

  • 你原代码中,pd.Grouper(freq="M")会提取每个日期对应的月份作为分组键,而groupby默认参数sort=True会把这些月份按键的升序(比如2000-01在前,2000-02在后)重新排列,所以结果看起来像是恢复了原数据顺序。
  • 加上sort=False后,分组会严格按照反转后数据中月份出现的先后顺序(也就是先2000-02,再2000-01)处理,同时每个组内的行顺序也保持反转后的状态,这样cumsum就是在反转后的组内数据上进行累加,最终结果的顺序也和反转后的数据集一致。

额外验证(可选)

如果想确认分组后的顺序,可以查看分组对象的groups属性:

groups = x.groupby(pd.Grouper(freq="M"), sort=False).groups
print(groups.keys())  # 输出顺序会是2000-02, 2000-01,和反转后数据的月份出现顺序一致

内容的提问来源于stack exchange,提问作者Bella_18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:50:42