Ответ 1
Используйте функцию to_datetime
, указав формат, соответствующий вашим данным.
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')
У меня есть одно поле в pandas DataFrame, которое было импортировано как строковый формат. Это должна быть переменная datetime. Как преобразовать его в столбец datetime и затем фильтровать по дате.
Пример:
Используйте функцию to_datetime
, указав формат, соответствующий вашим данным.
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')
Вы можете использовать метод DataFrame .apply()
для работы с значениями в Mycol:
>>> df = pd.DataFrame(['05SEP2014:00:00:00.000'],columns=['Mycol'])
>>> df
Mycol
0 05SEP2014:00:00:00.000
>>> import datetime as dt
>>> df['Mycol'] = df['Mycol'].apply(lambda x:
dt.datetime.strptime(x,'%d%b%Y:%H:%M:%S.%f'))
>>> df
Mycol
0 2014-09-05
Если у вас есть более одного столбца для преобразования, вы можете сделать следующее:
df[["col1", "col2", "col3"]] = df[["col1", "col2", "col3"]].apply(pd.to_datetime)
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')
работает, однако это приводит к предупреждению Python о
Значение пытается быть установлено на копии среза из DataFrame.
Вместо этого используйте .loc[row_indexer,col_indexer] = value
Я бы предположил, что это связано с некоторой индексацией цепочек.
Используйте функцию pandas to_datetime
, чтобы проанализировать столбец как DateTime. Кроме того, с помощью infer_datetime_format=True
он автоматически определит формат и преобразует указанный столбец в DateTime.
import pandas as pd
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], infer_datetime_format=True)
import pandas as pd
df["MyCol"]=pd.to_datetime(df["MyCol"])