在Python中,如何使用:split'hh:mm:ss'字符串在数据帧的每一行中浮动毫秒数?

2024-04-25 08:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还相当陌生,我很难解决ML问题,我想将一列运行空间'hh:mm:ss'格式转换为毫秒。步伐的类型为:String,毫秒的类型应为:float。你知道吗

我已经知道如何使用以下函数转换单个值:

import datetime

def convertMinToMs(s):

    hr, min, sec = map(float, s.split(':'))
    milliseconds = ((min * 60)*1000) + (sec*1000)

    return milliseconds

millisec = convertMinToMs(dataset['Avg Pace'].iloc[0])

我不知道如何处理一系列数据。我试图通过删除.iloc[0]来传递序列,但这会导致以下错误:

AttributeError:“Series”对象没有“split”属性


Tags: 类型格式hh空间secfloatminml
3条回答

最短答案:

dataset['Avg Pace'].apply(convertMinToMs)

将列转换为具有3列的数据帧,转换为浮点,然后转换为多个第二列和第三列:

df = dataset['Avg Pace'].str.split(':', expand=True).astype(float)
print (df)
      0     1     2
0   0.0  15.0  12.0
1  10.0   1.0  30.0

millisec = ((df[1] * 60)*1000) + (df[2]*1000)
print (millisec)
      0     1     2
0   0.0  15.0  12.0
1  10.0   1.0  30.0

但如果还需要毫秒加小时,则将值转换为时间增量^{},然后转换为纳秒的本机格式并除以ms

millisec = pd.to_timedelta(dataset['Avg Pace']).values.astype(np.int64) / 10**6
print (millisec)
[  912000. 36090000.]

尝试使用熊猫的功能:

dataset['Avg Pace'] = pd.to_datetime(dataset['Avg Pace'], format="%H:%M:%S")

然后你可以从这些datetime对象中得到你想要的任何东西。你知道吗

希望有用

相关问题 更多 >