唯一字符串值的累积聚合

Jim*_* O. 1 python pandas

这是我所拥有的:

import pandas as  pd
df = pd.DataFrame()
df['date'] = ['2020-01-01', '2020-01-01','2020-01-01', '2020-01-02', '2020-01-02', '2020-01-03', '2020-01-03']
df['value'] = ['A', 'A', 'A', 'A', 'B', 'A', 'C']
df
           date value
0   2020-01-01      A
1   2020-01-01      A
2   2020-01-01      A
3   2020-01-02      A
4   2020-01-02      B
5   2020-01-03      A
6   2020-01-03      C
Run Code Online (Sandbox Code Playgroud)

我想像这样随着时间的推移聚合唯一值:

           date value
0   2020-01-01      1
3   2020-01-02      2
5   2020-01-03      3
Run Code Online (Sandbox Code Playgroud)

不是在寻找这个作为答案:

           date value
0   2020-01-01      1
3   2020-01-02      2
5   2020-01-03      2
Run Code Online (Sandbox Code Playgroud)

我需要2020-01-033因为有三个唯一值(A、B、C)。

WeN*_*Ben 6

我们可以做的agg listcumsum

s=df.groupby('date').value.agg(list).cumsum().map(set).map(len)
date
2020-01-01    1
2020-01-02    2
2020-01-03    3
Name: value, dtype: int64
Run Code Online (Sandbox Code Playgroud)

  • 虽然这有效,但列表中的“cumsum”成本极高,而且很快就会爆炸。仍然是个好主意+1。 (4认同)