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

Pandas分组计算中位数赋值报错:TypeError与KeyError问题求助

解决方案

错误原因分析

  1. 第一次报错:groupby(['token_address', 'date'])['close'].median() 返回的是带有(token_address, date)多级索引的Series,而原DataFrame使用的是默认整数索引,两者索引不兼容,无法直接赋值。
  2. 第二次报错:添加as_index=False后,groupby返回的是包含token_address、date、close三列的DataFrame(其中close列是分组中位数),你试图将整个二维DataFrame赋值给一维列,自然会触发形状不匹配的错误;同时reset_index(level=0)用法错误,因为此时的索引是默认整数索引,不存在多级索引的level=0。

正确实现方式

方法一:使用transform(推荐)

transform会自动将分组计算的中位数广播回原DataFrame的每一行,完美匹配原索引:

prices_DEX['median'] = prices_DEX.groupby(['token_address', 'date'])['close'].transform('median')

方法二:先计算中位数再合并

如果需要先单独得到中位数结果再合并,可采用以下方式:

# 计算分组中位数并重命名列
median_df = prices_DEX.groupby(['token_address', 'date'], as_index=False)['close'].median()
median_df.rename(columns={'close': 'median'}, inplace=True)

# 合并回原DataFrame
prices_DEX = prices_DEX.merge(median_df, on=['token_address', 'date'], how='left')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:45:31