python - 具有多列的数据框的不同聚合
问题描述
我正在寻找一些捷径来减少所需的手动分组:
我有一个包含许多列的数据框。当按“级别”对数据框进行分组时,我想使用 nunique() 对两列进行分组,但所有其他列(约 60 列代表从 2021 年开始的年份)使用均值()。
有谁知道如何定义“其余”列?谢谢!
解决方案
我会按照以下方式进行
import pandas as pd
df = pd.DataFrame({'X':[1,1,1,2,2,2],'A':[1,2,3,4,5,6],'B':[1,2,3,4,5,6],'C':[7,8,9,10,11,12],'D':[13,14,15,16,17,18],'E':[19,20,21,22,23,24]})
aggdct = dict.fromkeys(df.columns, pd.Series.mean)
del aggdct['X']
aggdct['A'] = pd.Series.nunique
print(df.groupby('X').agg(aggdct))
输出
A B C D E
X
1 3 2 8 14 20
2 3 5 11 17 23
说明:我准备dict
了如何聚合的信息,dict.fromkeys
它确实提供了 dict,其中键是列的名称,值是pd.Series.mean
函数,然后删除要在 groupby 中使用的列并将选定的列更改为保持pd.Series.nunique
而不是pd.Series.mean
推荐阅读
- django - 如何在 Django 中直接为 OneToOne 关系创建模型
- java - 内部类是否继承到外部类的子类?
- android - 使用 Lottie 文件时 Android Studio 中的 java.io.IOException 错误
- android - 当设备重新启动并强制关闭应用程序时,Redmi 和其他自定义中文 ROM 中未收到 WorkManager doWork 回调
- python - 如何忽略熊猫断言帧相等的索引比较
- angular - 使用延迟加载以角度获取路由参数
- sql - 如何通过文本列将 JSONB 列与数组连接?
- angular - 在过渡时禁用 mat-stepper 的动画
- scala - 具有可变伙伴的不可变 POD 类
- c# - 在 FormattableString 和 (str, params object[]) 之间转换