Pandas 按列中的每个值分组

Pandas 按列中的每个值分组,pandas,group-by,Pandas,Group By,我的数据集如下所示: 我想分别计算每种电影类型的每种性别的收视率 预期产出: 在预期输出中,我们按性别分组,并希望统计每个性别在特定电影类型中给出评级的次数(即使一部电影有更多的电影类型) 编码到现在,但没有给出正确的输出: df.groupby(['genre','gender']).agg({"rating":"count"}) 它没有给出正确的输出,因为它只对完全相同的类型进行分组。在这种情况下,只有电影6和电影7会喊出正确的结果 如何按“类型

我的数据集如下所示:

我想分别计算每种电影类型的每种性别的收视率

预期产出:

在预期输出中,我们按性别分组,并希望统计每个性别在特定电影类型中给出评级的次数(即使一部电影有更多的电影类型)

编码到现在,但没有给出正确的输出:

df.groupby(['genre','gender']).agg({"rating":"count"})
它没有给出正确的输出,因为它只对完全相同的类型进行分组。在这种情况下,只有电影6和电影7会喊出正确的结果

如何按“类型”列中的每个值进行分组?我不想对它们进行热编码,因为我已经尝试过了,但是电影类型在真实的数据集中太多了,根本不起作用

提前谢谢你

首先与重新分配回同一列一起使用,然后通过和技巧获取计数,并为缺少的组合添加
0


它能起作用,但只能在一定程度上起作用。它给了我所有不同电影类型组合的计数。我想知道每种电影类型的数量(动作片有多少部,喜剧片有多少部等)输出:类型性别计数0 F 2 1 M 8 2动作F 132 3动作M 747 4动作冒险F 334 5动作冒险M 1198 6动作冒险动画儿童幻想F 6 7动作冒险动画儿童幻想M6@Rulli-抱歉,答案已使用
(df.assign(genre=df['genre'].str.split())编辑。explode('genre'))
hmm,也许我做错了什么,但它仍然为我提供了所有不同电影类型组合的答案。我要的是每个电影类型的计数,而不是组合的。@Rulli-我无法测试数据,因为图片可能是输入数据样本的文本版本吗?
df.groupby(['genre','gender']).agg({"rating":"count"})
df1 = (df.assign(genres = df['genres'].str.split())
         .explode('genres')
         .groupby(['genres','gender'])["rating"]
         .size()
         .unstack(fill_value=0)
         .stack()
         .sort_index(level=[1,0], ascending=[False, True])
         .reset_index(name='count')
         )
print (df1)
      genres gender  count
0     Action      M      2
1  Childrens      M      1
2     Comedy      M      1
3      Drama      M      2
4    Western      M      0
5     Action      F      0
6  Childrens      F      1
7     Comedy      F      2
8      Drama      F      1
9    Western      F      1