我有一个像这样的DataFrame:
Index Label
0 ABCD
1 EFGH
2 ABCD
3 ABCD
4 EFGH
5 ABCD
6 IJKL
7 IJKL
8 ABCD
9 EFGH
所以," ABCD"发生5次," EFGH" 3次和" IJKL"两次。我想计算每个Label的出现次数,并用他们的计数替换各个标签,以获得以下结果:
Index Label
0 5
1 3
2 5
3 5
4 3
5 5
6 2
7 2
8 5
9 3
最好的方法是什么? 谢谢!
答案 0 :(得分:3)
使用map
创建的Series
{/ 3}}:
df['Label'] = df['Label'].map(df['Label'].value_counts())
print (df)
Label
0 5
1 3
2 5
3 5
4 3
5 5
6 2
7 2
8 5
9 3
value_counts
+ transform
的另一种解决方案:
df['Label'] = df.groupby('Label')['Label'].transform('size')
print (df)
Label
0 5
1 3
2 5
3 5
4 3
5 5
6 2
7 2
8 5
9 3
答案 1 :(得分:2)
使用java Calculator 10 20
和groupby
:
transform
如果您的专栏没有print(df)
Label
Index
0 ABCD
1 EFGH
2 ABCD
3 ABCD
4 EFGH
5 ABCD
6 IJKL
7 IJKL
8 ABCD
9 EFGH
df['Label'] = df.groupby('Label').Label.transform('count')
print(df)
Label
Index
0 5
1 3
2 5
3 5
4 3
5 5
6 2
7 2
8 5
9 3
,NaN
和size
会返回相同的值。否则,count
包含size
s,因此请避免使用它。
使用NaN
的另一种方式:
Counter