我有一个包含三个字段的数据框:“位置”,“性”和“类别”。
字段位置的值在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()
等 似乎也很重复。
能否请您提供一组简单的可迭代该过程的代码来帮助我? 非常感谢!
答案 0 :(得分: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'))