Python 如何对dataframe中的两列进行不同值的累计和

Python 如何对dataframe中的两列进行不同值的累计和,python,pandas,dataframe,group-by,cumulative-sum,Python,Pandas,Dataframe,Group By,Cumulative Sum,我想在2列的group by上查找一列的累积和。我想获得“name”列在一段时间内唯一值的累积数量。因此,如果一个名字出现在以后的日期,他们不会被再次计算 我有这样一个数据框: date company names 2019-01-01 A Joe 2019-01-01 B Bill 2019-01-01 B Ben 2019-01-03 C Candy 2019-01-03

我想在2列的group by上查找一列的累积和。我想获得“name”列在一段时间内唯一值的累积数量。因此,如果一个名字出现在以后的日期,他们不会被再次计算

我有这样一个数据框:

date           company   names
2019-01-01        A      Joe
2019-01-01        B      Bill
2019-01-01        B      Ben
2019-01-03        C      Candy
2019-01-03        C      Cindy
2019-01-04        C      Cindy
2019-01-04        A      Julia
2019-01-05        A      Joe
2019-01-05        D      Daniel
我的预期产出:

date           company   Cumulative name count
2019-01-01        A       1
2019-01-01        B       2     
2019-01-03        C       2      
2019-01-04        C       2
2019-01-04        A       2
2019-01-05        A       2
2019-01-05        D       1
我在堆栈溢出问题上遇到了以下问题:

我遵循此链接的解决方案,计算一列的累计金额,即日期:

df = df.sort_values('date')
(df.drop_duplicates(['name'])
   .groupby('date')
   .size().cumsum()
   .reindex(df['date'].unique())
   .ffill()
)
仅日期列的类似名称计数:

    date          Cumulative name count
    2019-01-01     3    
    2019-01-03     5
    2019-01-04     6
    2019-01-05     7

但我现在想对数据和公司列都这样做。如果我将“公司”列包括在“集团”中,它仍然不会给我正确的数字。是否有类似的方法,在两列上进行此累计和以获得唯一名称累计计数?

为什么最后两列a返回2?因为2019-01-05有一个公司a条目。但由于名称重复,因此计数仍为2。因为我只想要唯一的名字计数。如果有一个新名称,那么计数将增加到3。为什么01-01 B有计数2?因为我试图获得累积唯一计数,而不是简单的唯一名称计数。查看此项了解计数和累计计数之间的差异:2019-01-01 B有两个唯一名称,因此其名称计数为2。为什么最后两个A返回2?因为2019-01-05有公司A的条目。但由于名称重复,因此计数仍为2。因为我只想要唯一的名字计数。如果有一个新名称,那么计数将增加到3。为什么01-01 B有计数2?因为我试图获得累积唯一计数,而不是简单的唯一名称计数。查看此项了解计数和累积计数之间的差异:2019-01-01 B有2个唯一名称,因此其名称计数为2。