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
相关产品推荐
相关产品推荐

