Возможно...
Просто:
import pandas as pd
df = pd.DataFrame({'DateTime': {0: '2017-08-02T00:00:00Z', 1: '2017-08-02T00:00:00.050Z', 2: '2017-08 02T00:00:00.100Z', 3: '2017-08-02T00:00:00.150Z', 4: '2017-08-02T00:00:00.200Z', 5: '2017-08 02T00:00:00.250Z', 6: '2017-08-02T00:00:00.300Z', 7: '2017-08-02T00:00:00.350Z', 8: '2017-08 02T00:00:00.400Z', 9: '2017-08-02T00:00:00.450Z', 10: '2017-08-02T00:00:00.500Z', 11: '2017-08 02T00:00:00.550Z', 12: '2017-08-02T00:00:00.600Z', 13: '2017-08-02T00:00:00.650Z', 14: '2017-08 02T00:00:00.700Z', 15: '2017-08-02T00:00:00.750Z', 16: '2017-08-02T00:00:00.800Z', 17: '2017-08 02T00:00:00.850Z', 18: '2017-08-02T00:00:00.900Z', 19: '2017-08-02T00:00:00.950Z', 20: '2017-08-02T00:00:01Z'}})
df['DateTime'] = pd.to_datetime(df['DateTime']).dt.tz_localize(None)
Или:
import pandas as pd
from dateutil.parser import parse
df = pd.DataFrame({'DateTime': {0: '2017-08-02T00:00:00Z', 1: '2017-08-02T00:00:00.050Z', 2: '2017-08 02T00:00:00.100Z', 3: '2017-08-02T00:00:00.150Z', 4: '2017-08-02T00:00:00.200Z', 5: '2017-08 02T00:00:00.250Z', 6: '2017-08-02T00:00:00.300Z', 7: '2017-08-02T00:00:00.350Z', 8: '2017-08 02T00:00:00.400Z', 9: '2017-08-02T00:00:00.450Z', 10: '2017-08-02T00:00:00.500Z', 11: '2017-08 02T00:00:00.550Z', 12: '2017-08-02T00:00:00.600Z', 13: '2017-08-02T00:00:00.650Z', 14: '2017-08 02T00:00:00.700Z', 15: '2017-08-02T00:00:00.750Z', 16: '2017-08-02T00:00:00.800Z', 17: '2017-08 02T00:00:00.850Z', 18: '2017-08-02T00:00:00.900Z', 19: '2017-08-02T00:00:00.950Z', 20: '2017-08-02T00:00:01Z'}})
df['DateTime'] = df['DateTime'].apply(lambda x: parse(x))
df['DateTime'] = df['DateTime'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S.%f'))
Или:
import pandas as pd
import dateparser
df['DateTime'] = df['DateTime'].apply(lambda x: dateparser.parse(x).strftime('%Y-%m-%d %H:%M:%S.%f'))
Вывод:
DateTime
0 2017-08-02 00:00:00.000000
1 2017-08-02 00:00:00.050000
2 2017-08-02 00:00:00.100000
3 2017-08-02 00:00:00.150000
4 2017-08-02 00:00:00.200000
5 2017-08-02 00:00:00.250000
6 2017-08-02 00:00:00.300000
7 2017-08-02 00:00:00.350000
8 2017-08-02 00:00:00.400000
9 2017-08-02 00:00:00.450000
10 2017-08-02 00:00:00.500000
11 2017-08-02 00:00:00.550000
12 2017-08-02 00:00:00.600000
13 2017-08-02 00:00:00.650000
14 2017-08-02 00:00:00.700000
15 2017-08-02 00:00:00.750000
16 2017-08-02 00:00:00.800000
17 2017-08-02 00:00:00.850000
18 2017-08-02 00:00:00.900000
19 2017-08-02 00:00:00.950000
20 2017-08-02 00:00:01.000000
Вам действительно нужно указывать форматы?
df.DateTime.apply(pd.to_datetime)
без какого-либо набора форматов работает нормально...Верный! Но вывод похож на 2017-08-02 00:00:00+00:00, 2017-08-02 00:00:00.050000+00:00, ...... Нет ли проблем с +00: 00?
У меня нет большого опыта работы с объектами даты и времени, но я не думаю, что это проблема, после преобразования в дату и время вы можете избавиться от часового пояса с помощью
df.DateTime.dt.tz_localize(None)
.@fsimonjetz, вы должны были добавить это как ответ ;-) Принятый слишком усложняет ситуацию, имхо. +00:00 означает UTC, так как в вашем вводе есть Z (формат ISO 8601, кстати, Z для зулусского времени), так что это абсолютно правильно.