Pandas按日期与站点ID分组求均值报错,求解决方法
解决pandas groupby分组报错问题
错误原因
你的代码错误地将第二个分组键作为独立参数传给了groupby()方法。groupby()的第一个参数需要接收所有分组键组成的列表,而你把df['station_id']放到了第二个参数位置(该位置实际对应axis参数),导致传入了可变的Series对象,触发"Series objects are not mutable, thus they cannot be hashed"错误。
正确写法
写法1:直接在列表中传入两个分组键
把日期提取结果和station_id放在同一个列表里作为groupby()的第一个参数:
Final_Df = df.groupby([df['date'].dt.date, 'station_id']).mean()
写法2:先创建日期列再分组(更清晰)
先把日期部分提取为新列,再指定分组列,同时可以只选择需要计算均值的字段(避免计算无意义的status_id均值):
# 新增日期列 df['date_date'] = df['date'].dt.date # 按日期和站点ID分组,计算指定字段的均值 Final_Df = df.groupby(['date_date', 'station_id'])[['bikes available', 'docks available']].mean()
补充说明
你之前尝试替换成station_id无效,是因为分组键的列表写法错误,不是列名的问题。只要确保分组键都放在同一个列表中,无论是用df['station_id']还是直接写列名station_id都可以。
内容的提问来源于stack exchange,提问作者VXP
相关产品推荐
相关产品推荐

