Python数据帧:如何将时间(格式化为字符串)转换为秒?

Python数据帧:如何将时间(格式化为字符串)转换为秒?,python,pandas,function,datetime,time,Python,Pandas,Function,Datetime,Time,我有一个数据帧,它的时间有一个“time take”列。格式不是通常的时间戳,所以我很挣扎。以下是该专栏的摘录 1 min 50 secs 2 mins 10 secs 40 secs 如何将此列转换为以秒为单位的输出?下面是我要找的 110 130 40 非常感谢。您可以使用datetime库解析字符串。我建议对数据帧字符串进行标准化,以便您可以在当前使用单个解析器 from datetime import datetime time = "1 min 50 secs&quo

我有一个数据帧,它的时间有一个“time take”列。格式不是通常的时间戳,所以我很挣扎。以下是该专栏的摘录

1 min 50 secs
2 mins 10 secs
40 secs 
如何将此列转换为以秒为单位的输出?下面是我要找的

110
130
40

非常感谢。

您可以使用
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

您可以使用
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

您可以使用pd.to_pandas的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
    time           timedelta
0   1 min 50 secs   110
1   2 mins 10 secs  130
2   40 secs         40
使用pd.to_timedelta的解决方案

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

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
    time           timedelta
0   1 min 50 secs   110
1   2 mins 10 secs  130
2   40 secs         40

您可以使用pd.to_pandas的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
    time           timedelta
0   1 min 50 secs   110
1   2 mins 10 secs  130
2   40 secs         40
使用pd.to_timedelta的解决方案

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

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
    time           timedelta
0   1 min 50 secs   110
1   2 mins 10 secs  130
2   40 secs         40

确切的格式是什么?是否如图所示?你们能展示数据帧的样本吗?这能回答你们的问题吗?另请参见@JustinOberle是的,格式仅为字符串,如图所示。确切的格式是什么?是否如图所示?你们能展示数据帧的样本吗?这能回答你们的问题吗?另请参见@JustinOberle是的,格式仅为字符串,如图所示,它在
40秒内不起作用
@MrFuppes,这就是我提到字符串标准化的原因。如果OP将40秒更改为0分40秒,它将起作用。这在
40秒
@MrFuppes内不起作用,这就是我提到标准化字符串的原因。如果OP将40秒更改为0分钟40秒,它将工作。