pandas.groupby中的迭代

问题描述 投票:0回答:1

我有这个数据框,它有三个字段:'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()

它看起来也非常重复。

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

python pandas pandas-groupby
1个回答
0
投票

首先按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'))
© www.soinside.com 2019 - 2024. All rights reserved.