Python 如何对dataframe中的两列进行不同值的累计和
我想在2列的group by上查找一列的累积和。我想获得“name”列在一段时间内唯一值的累积数量。因此,如果一个名字出现在以后的日期,他们不会被再次计算 我有这样一个数据框: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
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。