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

Python中DataFrame分组求和报错:datetime64类型不支持求和操作

解决groupby.sum()中datetime64类型不支持求和的问题

错误原因

你的DataFrame包含datetime64类型的列,groupby.sum()默认会对所有列执行求和操作,但datetime类型本身不支持sum运算,因此触发报错。

解决方案

1. 仅对数值列求和(推荐)

使用numeric_only=True参数限制sum操作只处理数值类型列:

product_group = all_data.groupby('Product')
product_group.sum(numeric_only=True)

或者直接指定需要求和的数值列(比如你的数值列是Sales、Quantity):

product_group = all_data.groupby('Product')
product_group[['Sales', 'Quantity']].sum()

2. 处理datetime列(仅适用于特定场景)

如果你的datetime列记录的是时间间隔/时长,需要计算总时长,可以先将其转换为数值型时间戳,求和后再转回datetime:

import pandas as pd

# 假设目标datetime列名为'OrderTime',转换为秒级时间戳
all_data['OrderTime_ts'] = all_data['OrderTime'].view('int64') // 10**9

product_group = all_data.groupby('Product')
sum_ts = product_group['OrderTime_ts'].sum()

# 转回datetime(注意:求和后的时间戳仅代表总秒数,并非常规时间点)
sum_datetime = pd.to_datetime(sum_ts, unit='s')

注意

大部分业务场景下,对datetime列求和没有实际意义,优先选择第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:54:58