簡體   English   中英

將 dataframe 列從 object 轉換為 timedelta 並求和

[英]Converting dataframe column from object to timedelta and summing

我有一個 Pandas dataframe 我按月分隔:

months = [g for n, g in df.groupby(pd.Grouper(key='DATE',freq='M'))]

然后,我每個月都會對名為PARTS RUN的列中的整數求和。

parts_run_month_sum = months[month]['PARTS RUN'].sum()

這一切都很好。 我需要做的最后一件事是將HOURS RUN (HR:MIN)列中的小時數相加。 此列是 object 數據類型。 數據本身是 timedelta 格式,而不是日期時間。 格式如下: 02:11:40 ,即小時:分鍾:秒。

如果我運行下面的代碼行,它會打印與每個月碰巧有的行數相關的正確索引號:

for run_time in range(len(months[month]['HOURS RUN (HR:MIN)'])):
    print(run_time)

但是,如果我嘗試自己獲取時間線,我會收到KeyError: 0 ,盡管在上面的示例中每個月都會返回一個 0 鍵。

for run_time in range(len(months[month]['HOURS RUN (HR:MIN)'])):
    print(months[month]['HOURS RUN (HR:MIN)'][run_time])

我實際上正在尋找的是如何對時間列求和,但因為它們是我不能這樣做的對象。

如何將格式為hours:minutes:seconds的列轉換為 timedelta 並對時間求和?

我認為你需要:

df['HOURS RUN (HR:MIN)'] = pd.to_timedelta(df['HOURS RUN (HR:MIN)'])

#if values are times
df['HOURS RUN (HR:MIN)'] = pd.to_timedelta(df['HOURS RUN (HR:MIN)'].astype(str))

我認為您的解決方案可能是sum

df1 = df.groupby(pd.Grouper(key='DATE',freq='M'))['HOURS RUN (HR:MIN)'].sum()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM