Вам не нужна строка формата, pandas
достаточно мужчина / женщина, чтобы справиться с этим:
In[2]:
pd.to_datetime('2014-01-01 00:00:00-06:00')
Out[2]: Timestamp('2014-01-01 06:00:00')
кроме того, у вашей строки формата есть многочисленные проблемы:
%b
является месяцем как сокращенная форма локали, у вас есть числовое представление, поэтому оно должно быть %m
%z
требует смещения UTC в форме '+HHMM'/-HHMM
Так что вам нужнопереформатируйте строку даты и времени в:
'2014-01-01 00:00:00-0600'
Если вы не хотите, чтобы смещение применялось, а смещение всегда было одинаковым, вы можете удалить его из строки:
In[25]:
pd.to_datetime('2014-01-01 00:00:00-06:00'.rsplit('-',1)[0])
Out[25]: Timestamp('2014-01-01 00:00:00')
Или вы можете нарезать строку:
In[26]:
pd.to_datetime('2014-01-01 00:00:00-06:00'[:-6])
Out[26]: Timestamp('2014-01-01 00:00:00')
Таким образом, чтобы сделать вышеупомянутое для всего столбца:
pd.to_datetime(df[col].str[:-6])
Пример:
In[27]:
df = pd.DataFrame({'date':['2014-01-01 00:00:00-06:00','2014-01-01 00:00:00+06:00']})
df
Out[27]:
date
0 2014-01-01 00:00:00-06:00
1 2014-01-01 00:00:00+06:00
In[28]:
pd.to_datetime(df['date'].str[:-6])
Out[28]:
0 2014-01-01
1 2014-01-01
Name: date, dtype: datetime64[ns]
Здесь мы используем метод доступа к строке .str
, чтобы разрезать все столбцы одинаковым образом, и передаем его в to_datetime
для преобразования всего столбца