pandas使用groupby时出现TypeError: unhashable type: 'list'如何解决?
报错原因
你代码中groupby的传参方式不符合pandas语法要求:pandas.DataFrame.groupby()的第一个入参为分组字段的集合,你错误的把两个分组字段拆分为[para1]、[para2]两个独立入参传入,第二个入参本来是接收axis参数(要求为可哈希的单个值,如0/1/'index'),你传入了不可哈希的列表[para2],所以触发TypeError: unhashable type: 'list'报错。
除此之外你的函数还有两个需要修复的问题:
- 函数直接调用全局变量
df,复用性差,最好将df作为入参传入 - 函数没有定义返回值,调用后无法得到统计结果
修复方案
调整groupby的传参逻辑,补充返回值,修复后的代码如下:
import pandas as pd def mean_SEM_Count(df, para1, para2, value): grouped = df.groupby([para1, para2])[value] # 合并三个统计结果为一个DataFrame,重置索引后返回 result = pd.DataFrame({ 'mean': grouped.mean(), 'SEM': grouped.sem(), 'count': grouped.count() }).reset_index() return result
调用示例:
# 先读取你的Excel数据 df = pd.read_excel("你的数据文件路径.xlsx") # 调用函数得到统计结果 df1 = mean_SEM_Count(df, para1 = 'Time', para2 = 'drug', value = 'food')
内容的提问来源于stack exchange,提问作者user17304179
相关产品推荐
相关产品推荐

