Python数据帧:如何将时间(格式化为字符串)转换为秒?
我有一个数据帧,它的时间有一个“time take”列。格式不是通常的时间戳,所以我很挣扎。以下是该专栏的摘录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
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秒,它将工作。