我无法将包含不同格式的日期时间字符串列转换为一种格式。这是一个例子:
test = pd.DataFrame(['2/5/18 21:24', '22/8/17 13:18', '23/8/17 10:47', '2018-09-02 10:15:25'], columns=["date_time"])
# '2018-09-02 10:15:25' this is not September, but should be February
如果它只从1种格式转换为另一种格式,例如,2/5/18 21:24
转换为2018-02-05 21:24:00
,那么我就知道该怎么做了。
import datetime
datetime.datetime.strptime('2/5/18 21:24', '%m/%d/%y %H:%M').strftime('%Y-%m-%h %H:%M:%S')
最初,我认为只有两种不同的日期格式:%m/%d/%y %H:%M
和%Y-%m-%h %H:%M:%S
所以我认为我可以这样做:
test['converted_date_time'] = np.where(test['date_time'].str.contains(r'/'), datetime.datetime.strptime(str(test['date_time']), '%m/%d/%y %H:%M').strftime('%Y-%m-%h %H:%M:%S'), test['date_time'])
但是你可以看到它不起作用,因此,我收到了这个错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Users/usr1/anaconda3/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/Users/usr1/anaconda3/lib/python3.6/_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data '0 2/5/18 21:24\n1 22/8/17 13:18\n2 23/8/17 10:47\n3 2018-09-02 10:15:25\nName: date_time, dtype: object' does not match format '%m/%d/%y %H:%M'
此外,我还尝试使用dateutil
模块:
import dateutil.parser
dateutil.parser.parse(str(test['date_time']))
并收到此错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Users/usr1/ht_monitoring/venv_ht_monitoring/lib/python3.6/site-packages/dateutil/parser.py", line 1182, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/Users/usr1/ht_monitoring/venv_ht_monitoring/lib/python3.6/site-packages/dateutil/parser.py", line 559, in parse
raise ValueError("Unknown string format")
ValueError: Unknown string format
我的python版本是
Python 3.6.2 |Anaconda, Inc. |Pycharm 2017.3.2 (Community Edition)
MacOS High Sierra version 10.13.3
有人可以帮助解决此问题,以便将所有日期转换为此格式%Y-%m-%h %H:%M:%S
吗?提前谢谢!
修改更新: 数据是从数百个文件中提取的,文件名格式为= filename_yyyy-mm-dd.csv