如何解决如何将以天,小时,分钟和秒为单位的时间转换为仅几秒?
我有以下数据框列:
我需要将csv列中的对象字符串数据转换为总秒数。
例如:10m-> 600s
我尝试了以下代码:
df.duration = str(datetime.timedelta(df['duration']))
但是显示以下错误
TypeError:timedelta天组件不受支持的类型:系列
解决方法
- 将
'duration'
转换为秒的正确矢量化方法是:- 将
'duration'
转换为时间增量 - 除以
pd.Timedelta(seconds=1)
- 将
- 仅在小时,分钟和秒部分中获取秒的正确方法是使用
.dt.seconds
- 请参阅此answer,以详细了解
timedelta
以及为何.total_seconds
方法是完全意外的。
import pandas as pd
# test data
df = pd.DataFrame({'duration': ['10d 15h 23m','10d 18h 13m']})
# convert duration to a timedelta
df.duration = pd.to_timedelta(df.duration)
# calculate total_seconds
df['total_sec'] = df.duration / pd.Timedelta(seconds=1)
# get seconds for just hours,minutes,seconds
df['sec_without_days'] = df.duration.dt.seconds
# display(df)
duration total_sec sec_without_days
0 10 days 15:23:00 919380.0 55380
1 10 days 18:13:00 929580.0 65580
,
您可以使用pandas.to_timedelta()
将字符串转换为timedelta对象,然后应用lambda函数获取持续时间的总秒数:
import pandas as pd
df['duration'] = pd.to_timedelta(df['duration']).apply(lambda x: x.total_seconds())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。