将带小数的字符串列表转换为日期时间
Converting list of strings with decimals into datetime
我有下面的字符串列表,看起来像这样
dates_list = ['7.0:2.0', '6.0:32.0', '6.0:16.0', '6.0:16.0', '6.0:17.0', '6.0:2.0', '6.0:1.0']
我想将其绘制成图表,但我需要将日期时间转换为分钟和秒 (%M:%S)
我尝试使用 strptime
for i in dates_list:
datetime_object = datetime.strptime(i,'%M:%S')
我收到以下错误:
ValueError: time data '7.0:2.0' does not match format '%M:%S'
有没有办法处理浮点数,或者我是否必须将字符串转换为 int 并删除小数?
试试这个,你需要正确指定格式
import datetime as dt
dates_list = ['7.0:2.0', '6.0:32.0', '6.0:16.0', '6.0:16.0', '6.0:17.0', '6.0:2.0', '6.0:1.0']
for i in dates_list:
datetime_object = dt.datetime.strptime(i,'%M.0:%S.0').time()
print(datetime_object)
我会用 pd.to_datetime() 来做到这一点。但是,它会添加不必要的日期信息,然后您可以使用 strftime:
将其删除
[x.strftime("%M:%S") for x in pd.to_datetime(dates_list,format='%M.0:%S.0')]
返回:
['07:02', '06:32', '06:16', '06:16', '06:17', '06:02', '06:01']
这将允许您引入任何小数:
from datetime import datetime
for i in dates_list:
time_list = i.split(':')
minute_decimal = time_list[0].split('.')[1]
second_decimal = time_list[1].split('.')[1]
datetime_object = datetime.strptime(i,'%M.{0}:%S.{1}'.format(minute_decimal,second_decimal)).time()
我有下面的字符串列表,看起来像这样
dates_list = ['7.0:2.0', '6.0:32.0', '6.0:16.0', '6.0:16.0', '6.0:17.0', '6.0:2.0', '6.0:1.0']
我想将其绘制成图表,但我需要将日期时间转换为分钟和秒 (%M:%S)
我尝试使用 strptime
for i in dates_list:
datetime_object = datetime.strptime(i,'%M:%S')
我收到以下错误:
ValueError: time data '7.0:2.0' does not match format '%M:%S'
有没有办法处理浮点数,或者我是否必须将字符串转换为 int 并删除小数?
试试这个,你需要正确指定格式
import datetime as dt
dates_list = ['7.0:2.0', '6.0:32.0', '6.0:16.0', '6.0:16.0', '6.0:17.0', '6.0:2.0', '6.0:1.0']
for i in dates_list:
datetime_object = dt.datetime.strptime(i,'%M.0:%S.0').time()
print(datetime_object)
我会用 pd.to_datetime() 来做到这一点。但是,它会添加不必要的日期信息,然后您可以使用 strftime:
将其删除[x.strftime("%M:%S") for x in pd.to_datetime(dates_list,format='%M.0:%S.0')]
返回:
['07:02', '06:32', '06:16', '06:16', '06:17', '06:02', '06:01']
这将允许您引入任何小数:
from datetime import datetime
for i in dates_list:
time_list = i.split(':')
minute_decimal = time_list[0].split('.')[1]
second_decimal = time_list[1].split('.')[1]
datetime_object = datetime.strptime(i,'%M.{0}:%S.{1}'.format(minute_decimal,second_decimal)).time()