gpt4 book ai didi

python - Pandas ;将 MM :SS, 小数列转换为秒数

转载 作者:行者123 更新时间:2023-11-28 22:52:24 24 4
gpt4 key购买 nike

嘿:花了几个小时尝试做一件非常简单的事情,但无法弄清楚。

我有一个包含列 df['Time'] 的数据框,其中包含时间,从 0 开始,最多 20 分钟,如下所示:

1:10,10
1:16,32
3:03,04

第一个是分钟,第二个是秒,第三个是毫秒(只有两位数)。

有没有一种方法可以使用 Pandas 将该列自动转换为秒数,而不将该列作为系列的时间索引?

我已经尝试了以下方法,但它不起作用:

pd.to_datetime(df['Time']).convert('s')   # AttributeError: 'Series' object has no attribute 'convert'

如果唯一的方法是解析时间,请指出这一点,我会准备一个适当/详细的答案来回答这个问题,不要浪费你的时间 =)谢谢!

最佳答案

代码:

import pandas as pd
import numpy as np
import datetime
df = pd.DataFrame({'Time':['1:10,10', '1:16,32', '3:03,04']})
df['time'] = df.Time.apply(lambda x: datetime.datetime.strptime(x,'%M:%S,%f'))
df['timedelta'] = df.time - datetime.datetime.strptime('00:00,0','%M:%S,%f')
df['secs'] = df['timedelta'].apply(lambda x: x / np.timedelta64(1, 's'))
print df

输出:

      Time                       time       timedelta    secs
0 1:10,10 1900-01-01 00:01:10.100000 00:01:10.100000 70.10
1 1:16,32 1900-01-01 00:01:16.320000 00:01:16.320000 76.32
2 3:03,04 1900-01-01 00:03:03.040000 00:03:03.040000 183.04

如果您也有负时间增量:

import pandas as pd
import numpy as np
import datetime

import re
regex = re.compile(r"(?P<minus>-)?((?P<minutes>\d+):)?(?P<seconds>\d+)(,(?P<centiseconds>\d{2}))?")

def parse_time(time_str):
parts = regex.match(time_str)
if not parts:
return
parts = parts.groupdict()
time_params = {}
for (name, param) in parts.iteritems():
if param and (name != 'minus'):
time_params[name] = int(param)
time_params['milliseconds'] = time_params['centiseconds']*10
del time_params['centiseconds']
return (-1 if parts['minus'] else 1) * datetime.timedelta(**time_params)

df = pd.DataFrame({'Time':['-1:10,10', '1:16,32', '3:03,04']})
df['timedelta'] = df.Time.apply(lambda x: parse_time(x))
df['secs'] = df['timedelta'].apply(lambda x: x / np.timedelta64(1, 's'))
print df

输出:

       Time        timedelta    secs
0 -1:10,10 -00:01:10.100000 -70.10
1 1:16,32 00:01:16.320000 76.32
2 3:03,04 00:03:03.040000 183.04

关于python - Pandas ;将 MM :SS, 小数列转换为秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com