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

GroupBy求和时排除datetime64类型的问题咨询

解决DataFrame Groupby求和时datetime64类型不支持的问题

问题场景

对包含datetime64格式列的DataFrame执行分组求和时,出现如下错误:

dfsum = df.groupby(['City']).sum()
TypeError: datetime64 type does not support sum operations

尝试过以下代码,但认为不是最优解:

desired = df.select_dtypes(include=[int, float, object])
dfsum_city = desired.groupby(['City']).sum()
dfsum_city.reset_index(inplace=True)

附数据示例:

Order IDProductQuantity OrderedPrice EachOrder DatePurchase AddressdaymonthyearTotal PriceCity
141234iPhone17002019-01-22 21:25:00944 Walnut St, Boston, MA 022152212019700Boston (MA)
141235Lightning Charging Cable114.952019-01-28 14:15:00185 Maple St, Portland, OR 97035281201914.95Portland (OR)
141236Wired Headphones211.992019-01-17 13:33:00538 Adams St, San Francisco, CA 94016171201923.98San Francisco (CA)
14123727in FHD Monitor1149.992019-01-05 20:33:00738 10th St, Los Angeles, CA 90001512019149.99Los Angeles (CA)
141238Wired Headphones111.992019-01-25 11:59:00387 10th St, Austin, TX 73301251201911.99Austin (TX)

优化解决方案

1. 精准指定需要求和的列(推荐)

直接明确指定要聚合的数值列,完全避开datetime和无意义的列:

# 只对需要求和的数值列执行聚合
dfsum_city = df.groupby(['City'])[['Quantity Ordered', 'Total Price']].sum().reset_index()

这种方法最直接,结果只包含你需要的聚合数据,不会处理无关列,避免不必要的错误和无效计算。

2. 排除datetime类型列求和

如果不想手动列举所有数值列,可以排除datetime类型的列,保留其他可求和的数值列:

# 移除datetime类型列,仅保留数值列参与求和
numeric_df = df.select_dtypes(exclude=['datetime64'])
dfsum_city = numeric_df.groupby(['City']).sum().reset_index()

和你之前的方法不同,exclude=['datetime64']只会移除时间列,不会把object类型的文本列(如Product、Purchase Address)纳入求和,避免出现文本拼接等无意义的结果。

3. 自定义多列聚合规则(灵活处理)

如果需要同时对不同列执行不同操作(比如对datetime列取最早/最晚订单时间),可以用agg方法自定义聚合逻辑:

dfsum_city = df.groupby(['City']).agg(
    total_quantity=('Quantity Ordered', 'sum'),
    total_revenue=('Total Price', 'sum'),
    earliest_order=('Order Date', 'min'),
    latest_order=('Order Date', 'max')
).reset_index()

这种方法既能完成数值列的求和,又能对datetime列做有意义的统计,最大化利用数据价值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:41:27