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