计算每个 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
我有这种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