如何将以天,小时,分钟和秒为单位的时间转换为仅几秒?

时间:2020-09-07 00:50:00

标签: python pandas dataframe csv data-analysis

我有以下数据框列:

Columm of Dataset

我需要将csv列中的对象字符串数据转换为总秒数。

例如:10m-> 600s


我尝试了以下代码:

df.duration = str(datetime.timedelta(df['duration']))

但是显示以下错误

TypeError:timedelta天组件不受支持的类型:系列

2 个答案:

答案 0 :(得分:2)

  • 'duration'转换为秒的正确矢量化方法是:
    1. 'duration'转换为时间增量
    2. 除以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

答案 1 :(得分:1)

您可以使用pandas.to_timedelta()将字符串转换为timedelta对象,然后应用lambda函数获取持续时间的总秒数:

import pandas as pd
df['duration'] = pd.to_timedelta(df['duration']).apply(lambda x: x.total_seconds())