[英]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.