第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何在 Pandas 中將 timedeltas 與 resample 或 groupby 相加?

如何在 Pandas 中將 timedeltas 與 resample 或 groupby 相加?

元芳怎么了 2022-06-22 17:05:26
我有一個(gè)帶有 TIME_IN 和 TIME_OUT 列的 DataFrame(日期時(shí)間到秒)。我想要一個(gè)新的 DF,其中包含按日期計(jì)算的持續(xù)時(shí)間總和(TIME_OUT - TIME_IN)。每天從早上 5 點(diǎn)到凌晨 5 點(diǎn)運(yùn)行,所以我也對此進(jìn)行了調(diào)整。這是一個(gè)自學(xué) Pandas 的迷你項(xiàng)目的一部分,但我的下一個(gè)應(yīng)用程序?qū)⑸婕案?,所以效率對我來說是關(guān)鍵。我嘗試了兩種方法(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 類型的列進(jìn)行求和,因此返回的 DataFrame 根本不包括 DURATION 列。最有效的方法是什么?
查看完整描述

2 回答

?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為您的代碼按預(yù)期工作?


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

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

df.groupby("DATE")['DURATION'].sum()

輸入到 groupby


    TIME_IN             TIME_OUT            DATE        DURATION

0   2019-05-06 11:46:51 2019-05-06 11:50:36 2019-05-06  00:03:45

1   2019-05-02 20:47:54 2019-05-02 20:52:22 2019-05-02  00:04:28

2   2019-05-05 07:39:02 2019-05-05 07:46:34 2019-05-05  00:07:32

3   2019-05-04 17:28:52 2019-05-04 17:32:57 2019-05-04  00:04:05

4   2019-05-05 14:08:26 2019-05-05 14:14:30 2019-05-05  00:06:04

分組后輸出


DATE

2019-05-02   00:04:28

2019-05-04   00:04:05

2019-05-05   00:13:36

2019-05-06   00:03:45

似乎按預(yù)期工作。


查看完整回答
反對 回復(fù) 2022-06-22
?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

您可以使用agg分組對象的功能來總結(jié)持續(xù)時(shí)間,如下所示


import pandas as pd

import numpy as np


np.random.seed(10)


## Generate dummy data for testing

dt_range = pd.date_range("oct-12-2019", "oct-14-2019", freq="H")


arr = []

while len(arr)<10:

    i,j = np.random.choice(len(dt_range), 2)

    g = np.random.choice(4)

    if j>i:

        arr.append([g, dt_range[i], dt_range[j]])


df = pd.DataFrame(arr, columns=["group", "time_in", "time_out"])



## Solution

df["duration"] = df["time_out"] - df["time_in"]

df.groupby(df["time_in"].dt.date).agg({"duration":np.sum})


查看完整回答
反對 回復(fù) 2022-06-22
  • 2 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號