pandas.groupby中的迭代

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas.groupby中的迭代相关的知识,希望对你有一定的参考价值。

我有这个数据框,它有三个字段:'location','sex'和'category'。

字段位置的值介于1和1000之间。字段性别的值为“m”或“f”。字段类别的值介于1到600之间。我想要为每个位置计算项目数,每个性别为一个类别值列表,比如[5,35,64,100, 216]

我尝试过类似的东西:

result5=df.loc[(df.sex=='M')&(df.category==5)].groupby(['location','category'])count()

我也可以在类别列表中为其他想要的值编写相同的代码。但它似乎非常重复

我也试过类似的东西:

for i in [5,35,64,100, 216]:
    if i=5:
       result5=df.loc[(df.sex=='M')&(df.category==i)].groupby(['location','category'])count()

它看起来也非常重复。

你能帮我一个简单的代码,可以迭代这个过程吗?非常感谢!

答案

首先按Series.isin过滤数据,然后使用GroupBy.size汇总所有3列:

L = [5,35,64,100, 216]
df1 = (df[df.location.isin(L)]
                .groupby(['location','sex','category'])
                .size()
                .reset_index(name='count'))

以上是关于pandas.groupby中的迭代的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种简单的方法来手动迭代现有的 pandas groupby 对象?

Pandas groupby 应用执行缓慢

熊猫:Groupby,循环并添加一小时迭代与组内的条件

每个系列的 Pandas groupby 自定义功能

Pandas、groupby 和其他列中的计数数据

列表中的 Pandas groupby 值