对接受订单的列执行累计计数

2024-04-24 23:06:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框

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

Tags: columns数据dataframedata顺序情况次数pd
1条回答
网友
1楼 · 发布于 2024-04-24 23:06:16

您可以使用^{}后跟列表。这是因为,与Pandas 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

相关问题 更多 >