gpt4 book ai didi

python - python : How to get the average of the n largest values for each column grouped by id

转载 作者:太空宇宙 更新时间:2023-11-04 11:07:36 25 4
gpt4 key购买 nike

我试图在按 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 个最大值的平均值。

最佳答案

使用GroupBy.agg省略列以处理 DataFrame 中没有 ID 的所有列:

df = data.groupby('ID').agg(lambda grp: grp.nlargest(100).mean()).reset_index()

print (df)
ID Property1 Property2 Property3
0 1.0 22.1 ... ...
1 1203.0 39.6 ... ...

或者在groupby之后指定列:

df = (data.groupby('ID')['Property1','Property2','Property3']
.agg(lambda grp: grp.nlargest(100).mean())
.reset_index())

关于python - python : How to get the average of the n largest values for each column grouped by id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59067194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com