如果前一行中的ID匹配,则为累计计数 - Python / Pandas

时间:2018-05-04 10:06:16

标签: python pandas

这是我想在python中实现的。 excel中有一个简单的公式,pythonic的处理方式是什么?

CUM_FREQ      ID      
1          100001
2          100001
3          100001
4          100001
1          100002
2          100002
1          100003
2          100003
3          100003
4          100003

每次ID更改CUM_FREQ行应重置为1。 Excel公式IF(C3 = C2,B2 + 1,1)

提前致谢! 拉胡

1 个答案:

答案 0 :(得分:0)

一种简单的方法是在列表中包含ID,并使用Counter来计算计数。

from collections import Counter

id_list = [100001, 100001, 100001, 100001, 100002, 100002, 100003, 100003, 100003, 100003]
cum_freq = []
for i, v in enumerate(id_list):
    cum_freq.append(Counter(id_list[:i+1])[v])

print(cum_freq)
[1, 2, 3, 4, 1, 2, 1, 2, 3, 4]