考虑到熊猫列的累积计数

时间:2018-07-31 11:17:37

标签: python python-3.x python-2.7 pandas pandas-groupby

我有一个熊猫数据框

pd.DataFrame(columns=["A", "B"], data=[['id1','a'],['id1','a'], ['id1','a'], ['id1','b'], ['id1','b'], ['id1','a'], ['id1','a'], ['id2','c'], ['id2','c'],  ['id2','a'],  ['id2','c']])

    A   B
0   id1 a
1   id1 a
2   id1 a
3   id1 b
4   id1 b
5   id1 a
6   id1 a
7   id2 c
8   id2 c
9   id2 a
10  id2 c

我想做一个分组,考虑到顺序,该分组使我在B列中的出现次数累计起来

    A   B   C
0   id1 a   3
1       b   2
2       a   2
3   id2 c   2
4       a   1
5       c   1

1 个答案:

答案 0 :(得分:3)

您可以使用itertools.groupby,然后使用列表推导。之所以可行,是因为与熊猫GroupBy不同的是,itertools版本不会聚合不相邻的元素。

from itertools import groupby

grouper = groupby(zip(df['A'], df['B']))
res = [(i1, i2, len(list(j))) for (i1, i2), j in grouper]

df = pd.DataFrame(res, columns=['A', 'B', 'C'])

print(df)

     A  B  C
0  id1  a  3
1  id1  b  2
2  id1  a  2
3  id2  c  2
4  id2  a  1
5  id2  c  1