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

含180+列的DataFrame时间序列重采样求和报错求助

解决多列DataFrame按时间重采样求和的问题

核心解决思路:无需循环,直接批量聚合

不用逐个指定列名,也不用写循环,直接对所有目标列执行重采样求和:

情况1:Date列为普通列(非索引)

直接调用resample并指定on='Date',然后用sum()或agg('sum')批量处理所有列:

# 方式一:直接对所有列求和(Date列会被用作重采样分组,不会参与求和)
df_agg = df.resample('1D', on='Date').sum()

# 方式二:明确指定要求和的列(排除Date列)
cols_to_aggregate = df.columns.drop('Date')
df_agg = df.resample('1D', on='Date')[cols_to_aggregate].sum()

情况2:将Date列设为索引

如果要把Date设为索引,确保索引是Datetime类型后直接重采样:

# 1. 将Date设为索引并强制转换为Datetime类型
df = df.set_index(pd.to_datetime(df['Date']))
# 2. 移除原Date列(可选,避免数据重复)
df = df.drop('Date', axis=1)
# 3. 重采样求和
df_agg = df.resample('1D').sum()

如果之前提示“resample仅支持DateTime类型”,执行pd.to_datetime(df['Date'])强制转换即可解决。


原循环代码的错误原因

你写的循环df.iloc[:, 0:x]会漏掉Date列(假设Date列不在前x列范围内),导致resample找不到分组用的Date列,所以报错。而且循环每次都会覆盖df_agg,最终只保留最后一次循环的结果,完全没必要用循环处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:01:17