基于旧DataFrame创建新表时遇TypeError:类别类型不支持加法操作
解决TypeError: category type does not support add operations问题
错误原因
你的days_since_prior_order列数据类型是Category,Pandas的Category类型默认不支持sum、mean这类算术运算,因此执行聚合操作时触发报错。
解决方案
先将该列转换为数值类型,再执行聚合关联操作:
- 转换
days_since_prior_order列的类型为数值型,同时将无法转换的异常值转为NaN:
import pandas as pd # 转换列类型,coerce参数处理无效值 users['days_since_prior_order'] = pd.to_numeric(users['days_since_prior_order'], errors='coerce')
- 计算用户聚合指标并关联回原DataFrame:
# 先单独计算聚合结果,避免原地修改冲突 user_agg = users.groupby('user_id').agg( user_orders=('order_number', 'max'), user_period=('days_since_prior_order', 'sum'), user_mean_days_since_prior=('days_since_prior_order', 'mean') ) # 将聚合结果关联到原DataFrame users = users.join(user_agg, on='user_id')
验证结果
执行后会得到你期望的聚合列,示例输出如下:
user_orders user_period user_mean_days_since_prior user_id 1 10 176.0 19.562500 2 14 198.0 15.234375 3 12 133.0 12.093750 4 5 55.0 13.750000 5 4 40.0 13.335938
内容的提问来源于stack exchange,提问作者Don K.
相关产品推荐
相关产品推荐

