gpt4 book ai didi

python - 如何对 Pandas 中的特定列进行分组 + 对此应用统计数据?

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:11 25 4
gpt4 key购买 nike

我有一个具有不同列的数据框:

'排名'、'文献'、'可引用文献'、'引文'、'自引'、'每篇文献的引文'、'H 指数'、'能源供应'、'人均能源供应'、' %可再生能源',...

现在首先我必须添加两列“大陆”以及“PopEst”(估计人口)。

现在,我被要求创建一个新的数据框,其中以大洲为索引,列为 ['size'、'sum'、'mean'、'std']。

我知道肯定有一个完全简单的解决方案......;-(

在网上阅读了大量内容后,我尝试了几件事,但似乎找到了解决方案:我的想法是用这个创建一个新的 Pandas Dataframe

Continents=Top15.groupby('Continent')[['PopEst']]

不幸的是,当我尝试打印它时,这给了我这个:

<pandas.core.groupby.DataFrameGroupBy object at 0x7faa323ffc50>

如果我这样做

print(Continents.size())

我知道这个看起来很有希望

Continent
Asia 5
Australia 1
Europe 6
North America 2
South America 1
dtype: int64

不幸的是,这只对于 .sum 和 .size 看起来不错。 .mean 和 .std 会产生如下错误:

DataError: No numeric types to aggregate

我的想法是使用它(即将列添加到我新发现的数据框中)

Continents['size']=Continents.size()

给我这个错误:

TypeError: 'DataFrameGroupBy' object does not support item assignment

我确信这是用 2 - 3 行代码完成的,并且很想知道它是如何工作的。

谁能给我指出正确的解决方案吗?

谢谢。

最佳答案

似乎您想保留所有其他列

Top15.assign(sizeofg=Top15.groupby('Continent')['PopEst'].transform('size')).\
drop_duplicates('Continent')

编辑:您需要agg

Top15.groupby('Continent')['PopEst'].agg(['sum','mean','count'])

关于python - 如何对 Pandas 中的特定列进行分组 + 对此应用统计数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47081624/

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