2016-01-13 91 views
0

增量重复过日期的我在下面的格式的数据帧:计数的大熊猫

day   value 
1/1/15  aa 
2/1/15  bb 
3/1/15  bb 
3/1/15  cc 
4/1/15  ee 
4/1/15  ff 
4/1/15  aa 

我想第一:第一组由“天”再算上在“价值”的独特价值加起来随后每一天增加计数。

结果会是什么样子:

day   value 
1/1/15  1 
2/1/15  2 
3/1/15  3 
4/1/15  5 

该解决方案将在大熊猫是理想的。我不知道从哪里开始,我所拥有的唯一想法是每组计数过多,然后使用defaultdict进行总结,但是如何按照日期顺序递增地执行它?

谢谢! 文森佐

+0

为什么预期输出不'1,2,4,7'?像这样:'In [219]: df.groupby(df ['day'])['value']。nunique()。cumsum() Out [219]: day 2015-01-01 1 2015-02-01 2 2015-03-01 4 2015-04-01 7 名称:value,dtype:int64'? – EdChum

+0

如果在分组日期之前没有看到该值,您是否只会递增? – EdChum

+0

是的,例如在第四天,我有5个独特的条目,然后@EdChum累积 – xxxvinxxx

回答

0

以下工作:

values = [l+l for l in ascii_lowercase[:8] 
dates = pd.date_range(date(2016, 1, 1), date(2016, 3, 30)) 
df = pd.DataFrame(data=np.random.choice(values, 500), index=np.random.choice(dates, 500), columns=['value']) 
df.sort_index().head(25) 

      value 
2016-01-01 bb 
2016-01-01 dd 
2016-01-01 ff 
2016-01-02 hh 
2016-01-02 aa 
2016-01-02 ee 
2016-01-02 aa 
2016-01-02 gg 
2016-01-02 hh 
2016-01-02 aa 
2016-01-03 cc 
2016-01-03 ee 

print(df.groupby(level=0)['value'].apply(lambda x: x.nunique()).cumsum()) 

2016-01-01  3 
2016-01-02  7 
2016-01-03  9 
2016-01-04  13 
2016-01-05  18 
2016-01-06  20 
+0

这有助于毕竟? – Stefan