在Python3 Pandas中有很多关于如何计数重复的好例子,但我很难在重复出现时计算出"计数"。例如:一个数据帧列有4个值,我不希望4作为答案,而是在一个新列中寻找1、2、3、4的值。
MyCol Tally DecendingTally
'a' 1 4
'a' 2 3
'b' 1 2
'b' 2 1
'a' 3 2
'd' 1 1
'a' 4 1
我试过了:
df['Tally'] = df['MyCol'].count()
这让我重复了正确的计数,但不是计数。有什么建议吗?有什么办法让它体面一点吗?
使用GroupBy.cumcount
并添加1
:
df['Tally'] = df.groupby('MyCol').cumcount().add(1)
df['DecendingTally'] = df.groupby('MyCol').cumcount(ascending=False).add(1)
print (df)
MyCol Tally DecendingTally
0 'a' 1 4
1 'a' 2 3
2 'b' 1 2
3 'b' 2 1
4 'a' 3 2
5 'd' 1 1
6 'a' 4 1