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

Python时间序列按年季度分组聚合报TypeError错误的解决方法

修复Pandas按年季度分组时的TypeError错误

你遇到的这个TypeError其实是两个小细节问题导致的,我帮你拆解并修正:

问题1:分组键的传递方式错误

你直接把df['Date'].dt.year和df['Date'].dt.quarter作为两个独立参数传给groupby,但Pandas的groupby要求多个分组键必须放在列表里。如果分开传,第二个参数会被误识别为axis参数(这个参数只能是0或1),Pandas尝试处理时就会触发"str和int无法拼接"的类型错误。

问题2:聚合函数未明确指定

你的agg({'AmountInUSD'})写法不符合要求,agg方法需要明确你对目标列要执行什么聚合操作(比如求和、平均值、计数等),只写列名无法让Pandas知道你想做什么。


修正后的基础代码

这里以对AmountInUSD求和为例,你可以根据需求换成'mean'、'count'等聚合函数:

import pandas as pd

# 先确保Date列是datetime类型(如果还没转换的话)
df['Date'] = pd.to_datetime(df['Date'])

# 正确的分组聚合写法
ts_quarter = df.groupby([df['Date'].dt.year, df['Date'].dt.quarter]).agg({'AmountInUSD': 'sum'})['AmountInUSD']

优化写法(更易读)

如果想让分组后的结果索引更清晰,可以给年份和季度的分组键重命名:

ts_quarter = df.groupby(
    [df['Date'].dt.year.rename('Year'), df['Date'].dt.quarter.rename('Quarter')]
).agg(AmountTotal=('AmountInUSD', 'sum'))

这样结果的行索引会显示Year和Quarter,列名是AmountTotal,后续处理起来更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:57:56