如何在 Pandas 中将 timedeltas 与 resample 或 groupby 相加?

我有一个带有 TIME_IN 和 TIME_OUT 列的 DataFrame(日期时间到秒)。我想要一个新的 DF,其中包含按日期计算的持续时间总和(TIME_OUT - TIME_IN)。每天从早上 5 点到凌晨 5 点运行,所以我也对此进行了调整。


这是一个自学 Pandas 的迷你项目的一部分,但我的下一个应用程序将涉及更多,所以效率对我来说是关键。


我尝试了两种方法(resample 和 groupby),但都有相同的问题:timedelta DURATION 列没有求和。


df["DATE"] = pd.to_datetime((df["TIME_IN"]                                    

             - dt.timedelta(hours=hrEnd)).dt.date)

df["DURATION"] = df["TIME_OUT"] - df["TIME_IN"]


dfGroupBy= df.groupby("DATE").sum()


df.setindex("DATE", inplace=True)

dfResample = df.resample("D").sum()

看来 Pandas 并没有像我尝试的那样对 timedelta64 类型的列进行求和,因此返回的 DataFrame 根本不包括 DURATION 列。最有效的方法是什么?


元芳怎么了
浏览 195回答 2
2回答

守着一只汪

我认为您的代码按预期工作?df['TIME_IN'] = pd.to_datetime(df['TIME_IN'])df['TIME_OUT'] = pd.to_datetime(df['TIME_OUT'])df['DATE'] = (df['TIME_IN'] - datetime.timedelta(hours=5)).dt.datedf["DURATION"] = df["TIME_OUT"] - df["TIME_IN"] df.groupby("DATE")['DURATION'].sum()输入到 groupby    TIME_IN             TIME_OUT            DATE        DURATION0   2019-05-06 11:46:51 2019-05-06 11:50:36 2019-05-06  00:03:451   2019-05-02 20:47:54 2019-05-02 20:52:22 2019-05-02  00:04:282   2019-05-05 07:39:02 2019-05-05 07:46:34 2019-05-05  00:07:323   2019-05-04 17:28:52 2019-05-04 17:32:57 2019-05-04  00:04:054   2019-05-05 14:08:26 2019-05-05 14:14:30 2019-05-05  00:06:04分组后输出DATE2019-05-02   00:04:282019-05-04   00:04:052019-05-05   00:13:362019-05-06   00:03:45似乎按预期工作。

小唯快跑啊

您可以使用agg分组对象的功能来总结持续时间,如下所示import pandas as pdimport numpy as npnp.random.seed(10)## Generate dummy data for testingdt_range = pd.date_range("oct-12-2019", "oct-14-2019", freq="H")arr = []while len(arr)<10:&nbsp; &nbsp; i,j = np.random.choice(len(dt_range), 2)&nbsp; &nbsp; g = np.random.choice(4)&nbsp; &nbsp; if j>i:&nbsp; &nbsp; &nbsp; &nbsp; arr.append([g, dt_range[i], dt_range[j]])df = pd.DataFrame(arr, columns=["group", "time_in", "time_out"])## Solutiondf["duration"] = df["time_out"] - df["time_in"]df.groupby(df["time_in"].dt.date).agg({"duration":np.sum})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python