【问题标题】:Perform cumulative count on a pandas column taking order into account考虑顺序对熊猫列执行累积计数
【发布时间】:2019-01-07 18:39:12
【问题描述】:

我有一个熊猫数据框

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用itertools.groupby 后跟列表理解。这是因为,与 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
    

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2019-01-09
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多