计算每个 X 值的 Y 值 - MultiIndex

Count Y values for each X value - MultiIndex

我有这种df...

          Modules
X     Y   
1    1          A
     2          B
     45         C
2    13         A
     12         B
3    18         A
     16         B
     15         D

我想计算每个 X 值的 Y 值的数量并将其添加为一列,如下所示:

          Modules  Count 
X     Y   
1    1          A      3
     2          B      3
     45         C      3
2    13         A      2
     12         B      2
3    18         A      3
     16         B      3
     15         D      3

目前我已经尝试过:

df['Count']=df.index.get_level_values(0).value_counts()

这给了我一个 NaN 列表,然后我尝试了:

df['Count']=df.index.value_counts()

这显然给了我 1 的列表。

谁能帮帮我?

试试这个

df.groupby(level=[0,1]).size()

您可以在分配列时为其指定任何名称。

您可以分组并计算每组的条目数,因为您希望返回一个与原始长度相同的系列,您可以使用 .transform() 来做到这一点:

df['Count'] = df.groupby(['X'])['Modules'].transform('count')


   X   Y Modules  Count
0  1   1       A      3
1  1   1       B      3
2  1  45       C      3
3  2  13       A      2
4  2  12       B      2
5  3  18       A      3
6  3  16       B      3
7  3  15       D      3