将DataFrame列中的唯一值替换为其计数

时间:2017-09-23 20:09:28

标签: python pandas dataframe unique

我有一个像这样的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

最好的方法是什么? 谢谢!

2 个答案:

答案 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 NaNsize会返回相同的值。否则,count包含size s,因此请避免使用它。

使用NaN的另一种方式:

Counter