如何解决将数据帧列从对象转换为时间增量并求和
我有一个按月分隔的 Pandas 数据框:
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)
列中的小时数相加。此列是对象数据类型。数据本身是一种时间增量格式,而不是日期时间。格式如下: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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。