我有以下格式的数据框:
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 :(得分: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