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

如何用Python Pandas为全量市场数据按月度生成交易日序号?

解决方案:按月生成交易日递增序号

直接使用pandas的groupby结合cumcount()方法即可实现全量数据集的按月交易日序号生成,这是最简洁高效的方案:

核心代码

如果你的日期是DataFrame的索引(如示例所示):

df['trading_day'] = df.groupby([df.index.year, df.index.month]).cumcount() + 1

如果日期是单独的列(列名为Date):

df['trading_day'] = df.groupby([df['Date'].dt.year, df['Date'].dt.month]).cumcount() + 1

原理说明

  • groupby([year, month])会将数据按「年份-月份」分组,精准对应每个自然月的交易日数据;
  • cumcount()会为每个分组内的行生成从0开始的连续整数,加1后就得到从1开始的交易日序号,和你单月测试时用range(1, len(df_test)+1)的效果完全一致;
  • 这个方法自动跳过非交易日(因为你的数据集只有交易日数据),不需要额外处理日历日和交易日的匹配问题。

为什么之前的方法失败

你之前用pd.Grouper(freq='M')分组后尝试.transform(add(1))无效,是因为add(1)只是简单的数值加法,无法生成组内递增序号,而cumcount()是pandas专门为分组场景设计的序号生成工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:24:58