如何在熊猫数据框中执行不同值的累积和

dar*_*agh 8 python datetime dataframe pandas pandas-groupby

我有一个这样的数据框:

id    date         company    ......
123   2019-01-01        A
224   2019-01-01        B
345   2019-01-01        B
987   2019-01-03        C
334   2019-01-03        C
908   2019-01-04        C
765   2019-01-04        A
554   2019-01-05        A
482   2019-01-05        D
Run Code Online (Sandbox Code Playgroud)

并且我想获取“公司”列随时间的唯一值的累积数量。因此,如果公司在以后出现,则不会再计算在内。

我的预期输出是:

date            cumulative_count
2019-01-01      2
2019-01-03      3
2019-01-04      3
2019-01-05      4
Run Code Online (Sandbox Code Playgroud)

我试过了:

df.groupby(['date']).company.nunique().cumsum()
Run Code Online (Sandbox Code Playgroud)

但是,如果同一家公司在不同的日期出现,则此重复计算。

use*_*203 8

使用duplicated+ cumsum+last

m = df.duplicated('company')
d = df['date']

(~m).cumsum().groupby(d).last()
Run Code Online (Sandbox Code Playgroud)

date
2019-01-01    2
2019-01-03    3
2019-01-04    3
2019-01-05    4
dtype: int32
Run Code Online (Sandbox Code Playgroud)

  • @daragh您的日期是否正确排序? (2认同)