使用Pandas按周分组聚合:多列统计与value1频次统计报错解决
解决按周分组聚合的错误及实现需求
错误原因
你调用pd.Series.value_counts()作为聚合函数时出错,是因为这是类的未绑定方法,需要传入具体的Series实例才能执行,而agg函数需要的是能接收组内数据作为参数的可调用对象。
正确实现代码
import pandas as pd import numpy as np # 生成测试DataFrame df = pd.DataFrame({'date': pd.date_range('2020-01-01', '2020-01-31', freq='D'), 'value1': np.random.randint(0, 10, 31), 'value2': np.random.randint(0, 100, 31), 'value3': np.random.randint(0, 1000, 31)}) # 按周分组并执行指定聚合操作 result = df.groupby(pd.Grouper(key='date', freq='W'))\ .agg( value2=('value2', 'mean'), value3=('value3', 'size'), # 统计组内总条数,若要统计非空值用'count' value_1=('value1', lambda x: x.value_counts().to_dict()) ).reset_index() print(result)
代码说明
- value2平均值:直接使用
'mean'聚合函数计算组内均值。 - value3计数:用
'size'统计组内所有行的数量(和你的期望输出匹配);如果需要统计value3列的非空值数量,替换为'count'即可。 - value1频次统计:通过lambda函数对每组的value1数据调用
value_counts(),再转成字典格式,得到每个唯一值的出现频次。
内容的提问来源于stack exchange,提问作者Jonas Palačionis
相关产品推荐
相关产品推荐

