无法解决“-”是格式为“%-m /%-d /%Y%-H:%M”的错误指令

时间:2019-01-04 17:44:50

标签: python pandas

我的代码:

FFA_mean = ['0.511', '0.704', '0.922', '0.764', '1.084']
FFA_mean = [float(i) for i in FFA_mean]

发生的错误:

crime = pd.read_csv("DATA/OAKLAND.csv", parse_dates=True)
crime['DATETIME'] = pd.to_datetime(crime['DATETIME'], format=time_format)
time_format = '%-m/%-d/%Y %H:%M'

一些采样日期:

'-' is a bad directive in format '%-m/%-d/%Y %H:%M'

有人知道正确的time_format是什么吗?到目前为止,我无法获得正确的代码。 谢谢

2 个答案:

答案 0 :(得分:3)

该错误专门告诉您该问题。错误的指令。

您应该在此处阅读文档:https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior

伪指令为%m,而不是%-m。删除破折号将修复它。

答案 1 :(得分:0)

遇到此错误时,您知道不会使用“-”作为指令格式。 因此,您应该采用替代策略,例如在将格式转换为日期时间之前替换“-”字符:

1/例如第一种替换方式

from datetime import datetime
from re import sub

date = '2021-07-02 00:00:00'

# re.sub(pattern, repl, string, count=0, flags=0)
cdat = datetime.strptime(sub('-', '', date), '%Y%m%d %H:%M:%S')

print(cdat)
# 2021-07-02 00:00:00

2/例如第二种替换方式

# re.sub(pattern, repl, string, count=0, flags=0)
cdat = datetime.strptime(date.replace('-', ''), '%Y%m%d %H:%M:%S')
print(cdat)
# 2021-07-02 00:00:00

这仅用于日期时间转换,但这里有一个带有熊猫数据框的示例:

import pandas as pd
crime = pd.DataFrame({"DATETIME": ['10-10-2018 20:00', '11-19-2018 14:15']})

#            DATETIME
# 0  10-10-2018 20:00
# 1  11-19-2018 14:15

crime = crime.applymap(lambda x: sub('-', '', str(x)))
#         DATETIME
# 0  10102018 20:00
# 1  11192018 14:15


time_format = '%m%d%Y %H:%M'
crime['DATETIME'] = pd.to_datetime(crime['DATETIME'], format=time_format)

print(crime)
#             DATETIME
# 0 2018-10-10 20:00:00
# 1 2018-11-19 14:15:00