我有一个犯罪数据集,其中每一行都是一个记录的犯罪,将在ARIMA时间序列模型中使用。
Date
0 2015-09-05
1 2015-09-05
2 2015-07-08
3 2017-09-05
4 2018-09-05
4 2018-09-05
我想根据数据进行分组,以便汇总当天发生的犯罪行为。
Date Count
0 2015-09-05 2
1 2015-07-08 1
2 2017-09-05 1
3 2018-09-05 2
我很挣扎,因为我试图每年按周分组,也因为我没有聚合一列的内容,我试图计算其中有多少行被分组。
谢谢。
如果您的数据集是一个数据帧,您可以使用:
df.assign(Count=1).groupby('Date')['Count'].count()
如果是一个系列:
series.to_frame().assign(Count=1).groupby('Date')['Count'].count()
例如:
df = pd.DataFrame({'Date':['2015-09-05',
'2015-09-05',
'2015-07-08',
'2017-09-05',
'2018-09-05',
'2018-09-05']})
df.assign(Count=1).groupby('Date')['Count'].count().reset_index()
退货:
Date Count
0 2015-07-08 1
1 2015-09-05 2
2 2017-09-05 1
3 2018-09-05 2
一种方法是使用Python而不是panda来完成繁重的任务:
import pandas as pd
import datetime
df = pd.DataFrame([datetime.datetime.strptime(x, "%Y-%m-%d").date() for x in ['2015-09-05', '2015-09-05', '2015-07-08', '2017-09-05', '2018-09-05', '2018-09-05']], columns=['Date'])
from collections import Counter
c = Counter(list(df['Date']))
df2 = pd.DataFrame(zip(list(c.keys()), list(c.values())), columns=['Date', 'Count'])
print(df2)
输出:
Date Count
0 2015-09-05 2
1 2015-07-08 1
2 2017-09-05 1
3 2018-09-05 2