【发布时间】:2019-09-08 01:41:30
【问题描述】:
我希望能够计算某个位置在 7 天内出现的次数。我尝试了几种组合 groupby、rolling 和 Grouper 的方法,但仍然没有得到我想要的结果。如何按 2 列分组以获得我想要的结果?
这是一个示例表:
locations = ['A', 'B', 'A', 'B', 'C','C']
df = pd.DataFrame({'date': times,'location': locations})
date location
0 2014-08-25 A
1 2014-08-26 B
2 2014-08-26 A
3 2014-09-11 B
4 2014-09-12 C
5 2014-09-15 C
我试过了:
df.set_index('date', inplace=True)
df['roll']=df.groupby('location')['location'].rolling(7).count().reset_index(0,drop=True)
但是给我这个:
location roll
date
2014-08-25 A 1.0
2014-08-26 B 2.0
2014-08-26 A 1.0
2014-09-11 B 2.0
2014-09-12 C 1.0
2014-09-15 C 2.0
我想要的输出应该是这样的:
times = pd.to_datetime(pd.Series(['2014-08-25','2014-08-26','2014-08-26','2014-09-11','2014-09-12', '2014-09-15']))
locations = ['A', 'B', 'A', 'B', 'C','C']
count = [1, 1, 2, 1, 1, 2]
df1 = pd.DataFrame({'date': times,'location': locations, 'rolling_count':count})
date location rolling_count
0 2014-08-25 A 1
1 2014-08-26 B 1
2 2014-08-26 A 2
3 2014-09-11 B 1
4 2014-09-12 C 1
5 2014-09-15 C 2
【问题讨论】:
标签: pandas