【问题标题】:Python DataFrame: How to convert time (formatted as a string) into seconds?Python DataFrame:如何将时间(格式化为字符串)转换为秒?
【发布时间】:2021-07-19 23:12:59
【问题描述】:

我有一个 DataFrame,它有一个“Time Taken”列。格式不是通常的时间戳,所以我很挣扎。以下是该专栏的摘录。

1 min 50 secs
2 mins 10 secs
40 secs 

如何转换此列以在几秒钟内产生输出?以下是我正在寻找的内容。

110
130
40

非常感谢。

【问题讨论】:

标签: python pandas function datetime time


【解决方案1】:

您可以使用datetime 库来解析字符串。我建议标准化数据帧字符串,以便您可以使用单个解析器。

from datetime import datetime

time = "1 min 50 secs"

dt = datetime.strptime(time,'%M min %S secs')

secs = dt.minute*60 + dt.second
print(secs)

110

【讨论】:

  • @MrFuppes 这就是我提到字符串标准化的原因。如果 OP 将 40 秒更改为 0 分 40 秒,它将起作用。
【解决方案2】:

可以使用pandas的pd.to_timedelta函数。

输入

df = pd.DataFrame({'time': ["1 min 50 secs", "2 mins 10 secs", "40 secs"]})


    time
0   1 min 50 secs
1   2 mins 10 secs
2   40 secs

使用 pd.to_timedelta 的解决方案

df['timedelta'] = pd.to_timedelta(df.time.str.replace('secs','sec')
                .str.replace('mins', 'min')).dt.total_seconds().astype(int)

输出

    time           timedelta
0   1 min 50 secs   110
1   2 mins 10 secs  130
2   40 secs         40

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 2012-05-26
    • 2023-03-13
    • 2016-02-19
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 2011-09-18
    相关资源
    最近更新 更多