【发布时间】:2020-03-22 19:58:17
【问题描述】:
我试图在按 id 分组时获取每列的平均值。但我没有让它按我的意愿工作。
数据:
ID Property3 Property2 Property3
1 10.2 ... ...
1 20.1
1 51.9
1 15.8
1 12.5
...
1203 104.4
1203 11.5
1203 19.4
1203 23.1
到目前为止我得到了什么:
我得到了这两个尝试。但它们都只用于一列,我不知道该怎么做。:
data.groupby('id')['property1'].apply(lambda grp: grp.nlargest(100).mean())
1 37.897989
2 33.059432
3 34.926530
4 33.036137
data.groupby('id').agg({'property1': {lambda grp: grp.nlargest(100).mean()}})
id property1 <lambda>
1 37.897989
2 33.059432
3 34.926530
4 33.036137
我想要什么:
理想情况下,我希望有一个如下数据框:
ID Property3 Property2 Property3
1 37.8 5.6 2.3
2 33.0 1.5 10.4
3 34.9 91.5 10.3
4 33.0 10.3 14.3
这样每一行都包含按 id 分组的每个列的 100 个最大值的平均值。
【问题讨论】:
标签: python pandas dataframe lambda pandas-groupby