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

在R中按10月-次年9月周期汇总us_assigned列并生成新dataframe

按年度周期(10月至次年9月)汇总DataFrame数据的高效方法

针对你需要按「当年10月至次年9月」的周期汇总us_assigned列的需求,完全不用手动切片,用Pandas的分组或时间重采样就能高效实现,以下是两种实用方案:

方案一:基于年份和月份生成分组键

适合未构建日期列的场景,直接通过现有Year和Month列生成分组标识:

import pandas as pd

# 假设你的原始DataFrame名为df
# 生成分组年度:将10-12月的记录归到「起始年」(如1953年10月属于1953年度周期)
df['group_year'] = df.apply(lambda row: row['Year'] if row['Month'] <=9 else row['Year'] -1, axis=1)

# 按分组年度求和,生成结果DataFrame
summary_df = df.groupby('group_year')['us_assigned'].sum().reset_index()

# 重命名列匹配需求
summary_df.rename(columns={'group_year': 'Year'}, inplace=True)

如果希望结果的Year列用周期结束年(如1953年10月-1954年9月对应1954),只需修改分组键的逻辑:

df['group_year'] = df.apply(lambda row: row['Year'] if row['Month'] <=9 else row['Year'] +1, axis=1)

方案二:用时间序列重采样(更直观)

先将年份和月份转为日期格式,利用Pandas的时间重采样功能直接按自定义年度周期汇总:

import pandas as pd

# 构建完整日期列(默认每月1号)
df['date'] = pd.to_datetime(df[['Year', 'Month']].assign(Day=1))

# 设置日期为索引
df.set_index('date', inplace=True)

# 按「每年10月起始」的年度周期重采样求和
# 规则'AS-OCT'表示年度起始于10月,对应周期为上一年10月至本年9月
summary_df = df['us_assigned'].resample('AS-OCT').sum().reset_index()

# 提取周期起始年作为结果的Year列(如2020-10-01对应2020年度周期)
summary_df['Year'] = summary_df['date'].dt.year -1

# 整理最终列
summary_df = summary_df[['Year', 'us_assigned']]

如果需要用周期结束年作为Year列,直接取summary_df['date'].dt.year即可。

这两种方法都能自动遍历所有数据周期,无需手动指定行范围,数据更新后也能直接复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:05:18