Python 如何从datetime开始计算按日期分组的列的总和?蟒蛇熊猫

Python 如何从datetime开始计算按日期分组的列的总和?蟒蛇熊猫,python,pandas,datetime,pandas-groupby,Python,Pandas,Datetime,Pandas Groupby,我想按日期计算列duration group的总和,但在这段df中,列begin和end是datetime: 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-1

我想按日期计算列duration group的总和,但在这段df中,列begin和end是datetime:

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         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

您可以使用datetime对象的方法
date
。将其应用于列,即可获得日期。然后分组就可以了

def reduce_to_date(value):
    return value.date()

df['begin'] = df['begin'].apply(reduce_to_date)

df.groupby('begin')['duration'].sum()/3600

您可以使用datetime对象的方法
date
。将其应用于列,即可获得日期。然后分组就可以了

def reduce_to_date(value):
    return value.date()

df['begin'] = df['begin'].apply(reduce_to_date)

df.groupby('begin')['duration'].sum()/3600

第一步是在时间戳中分隔时间和日期。我在下面给出了一个示例,其中日期的定义方式与数据框架中的定义方式相同

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
下一步是按照您的方式进行分组,但只需提供有关分组依据的变量的信息:

DF.groupby(['Date']).sum()
哪个给

Date        Duration     duration
2018-07-02  34106.47    34106.47

第一步是在时间戳中分隔时间和日期。我在下面给出了一个示例,其中日期的定义方式与数据框架中的定义方式相同

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
下一步是按照您的方式进行分组,但只需提供有关分组依据的变量的信息:

DF.groupby(['Date']).sum()
哪个给

Date        Duration     duration
2018-07-02  34106.47    34106.47

但它在特定日期有效,在其他日期无效。
-你能添加一些不起作用的行吗?是的,但在我需要删除它之后,它不能太大…你需要想出一个解决问题的方法,否则这看起来不可复制
但它在特定日期有效,在其他日期无效。
-你能添加一些不起作用的行吗?是的,但在我需要删除它之后,它不能太大…你需要提出一个问题的解决方案,否则这看起来不可复制嗯,它的工作原理与
df.groupby(df['begin'].dt.date)['duration_'].sum()
,没有必要。您可以挑出数据帧中方法(您的和我的)不起作用的部分(假设我们的方法是重复的)。是不是有些人开始某一天,但第二天就结束了?嗯,它的工作原理和df.groupby(df['begin'].dt.date)['duration'].sum(),这不是必需的。你能挑出你的数据帧中方法(你的和我的)不起作用的部分吗(假设我们的方法是重复的)。是否可以让一些
开始
开始某一天,但
在第二天结束?