Pandas-按周对数据进行分组,并为组中的行数添加列

  • 本文关键字:添加 数据 Pandas- python pandas
  • 更新时间 :
  • 英文 :


我有一个犯罪数据集,其中每一行都是一个记录的犯罪,将在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

最新更新