[英]How do the sum of a column with group by date from datetime ? Python Pandas
我想按日期对列持续时间组求和,但列开始和结束是这段 df 中的日期时间:
begin end duration
2020-10-14 19:17:52.724020 2020-10-14 19:21:40.179003 227.45
2020-10-14 19:21:40.179003 2020-10-14 19:21:44.037103 3.86
2020-10-14 19:59:27.183161 2020-10-14 20:00:43.847816 76.66
2020-10-14 20:00:43.847816 2020-10-14 20:00:43.847822 0
2020-10-14 20:02:14.341240 2020-10-14 23:59:59.900000 14265.56
2020-10-15 00:00:00.000000 2020-10-15 05:25:32.935971 19532.94
2020-10-15 05:25:32.935971 2020-10-15 05:25:33.068959 0.13
df.info()
begin 41763 non-null datetime64[ns]
end 41763 non-null datetime64[ns]
duration 41763 non-null float64
结果必须是:
begin duration
2020-10-14 14,573.53
2020-10-15 19,533.07
所以我尝试了我所有的 df,但它在特定日期有效,而在其他日期无效。 因为我对 excel 做了同样的事情,而对于一个日期,我得到了不同的结果。
import pandas as pd
import datetime
df = df.groupby(df['begin_'].dt.date)['duration_'].sum()/3600
您可以使用日期时间 object 的方法date
。将其应用于该列并获得日期。 之后分组就好了。
def reduce_to_date(value):
return value.date()
df['begin'] = df['begin'].apply(reduce_to_date)
df.groupby('begin')['duration'].sum()/3600
第一步是在您拥有的时间戳中分隔时间和日期。 我在下面给出了日期定义方式与在您的 dataframe 中定义的方式相同的示例。
0 2018-07-02 10:54:00 227.45
1 2018-07-02 10:54:00 3.86
2 2018-07-02 10:54:00 76.66
3 2018-07-02 10:54:00 14265.56
4 2018-07-02 10:54:00 19532.94
d ={'DATA':['2018-07-02 10:54:00','2018-07-02 10:54:00' , '2018-07-02 10:54:00' , '2018-07-02 10:54:00' ,'2018-07-02 10:54:00'],'duration': [227.45,3.86,76.66,14265.56,19532.94]}
DF = df.assign(Date=df.Date.dt.date, Time=df.Date.dt.time, Duration = df.duration)
下一步是按照你groupby
的方式分组,但是通过简单地提供关于你分组的变量的信息:
DF.groupby(['Date']).sum()
这给
Date Duration duration
2018-07-02 34106.47 34106.47
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.