我有一个看起来像这样的简单DataFrame:
date
0 2018-08-28 13:13:37
1 2018-08-28 13:43:31
2 2018-08-28 15:23:25
3 2018-08-28 15:23:30
4 2018-08-28 15:23:33
5 2018-08-28 15:23:34
...
790 2018-09-04 10:45:38
791 2018-09-04 10:45:38
792 2018-09-04 11:13:16
793 2018-09-04 12:12:09
794 2018-09-04 14:01:54
我想对所有具有相同日期(小时,分钟和秒并不重要)的行进行分组,并用总和(具有相同日期的合并行数)创建一个新列。
我要计算的输出是:
date sum
0 2018-08-28 6
1 2018-08-29 100
2 2018-08-30 100
3 2018-08-31 100
4 2018-09-01 100
5 2018-09-02 100
6 2018-09-03 100
7 2018-09-04 100
我尝试使用groupby function,但是我无法获得正确的输出
答案 0 :(得分:2)
使用:
df.groupby(df['date'].dt.date).size().rename(columns={'size':'sum'})
此方法假定Series
'日期'已为datetime
类型。
如果通过pd.read_csv
传递参数“ parse_dates=['date']
”来创建DataFrame或运行以下命令,则可以设置此参数:
df['date'] = pd.to_datetime(df['date'])
答案 1 :(得分:2)
将value_counts
与dt.date
访问器一起使用:
df['date'].dt.date.value_counts()
示例数据演示:
df['date'].dt.date.value_counts().rename('sum').to_frame()
sum
2018-08-28 6
2018-09-04 5