Преобразовать столбец данных в pandas в np.datetime64
Я хочу добавить np.datetime64
Столбец в кадр данных pandas, который был прочитан из файла.csv, содержащего столбцы для года, месяца, дня, часа и минуты и использующего его в качестве индекса. Я объединил отдельные столбцы, чтобы сделать столбец строк даты и времени.
import numpy as np
import pandas as pd
filename = 'test.csv'
df = pd.read_csv(filename, header=0, usecols = [2,3,4,5,6], names = ['y','m','d','h','min'],dtype = {'y':'str','m':'str','d':'str','h':'str','min':'str'}) #read csv file into df
df['datetimetext'] = (df['y']+'-'+df['m']+'-'+df['d']+' '+df['h']+':'+df['min']+':00')
Итак, датафрейм выглядит так:
y m d h min datetimetext
0 1993 09 06 00 30 1993-09-06 00:30:00
1 1993 09 06 01 00 1993-09-06 01:00:00
2 1993 09 06 01 30 1993-09-06 01:30:00
3 1993 09 06 02 00 1993-09-06 02:00:00
4 1993 09 06 02 30 1993-09-06 02:30:00
......
Теперь я хочу добавить столбец с датой и временем в формате np.datetime64
Я хочу написать
df['datetime'] = np.datetime64(df['datetimetext'])
но это создает ошибку
ValueError: Could not convert object to NumPy datetime
Нужно ли перебирать каждую строку кадра данных, или есть более элегантное решение?
1 ответ
Решение
Самый простой способ с тем, что у вас есть
df['datetime'] = pd.to_datetime(df['datetimetext'])
ССЫЛКА НА ДОКУМЕНТЫ
Однако, если ваши столбцы названы правильно, вы можете конвертировать непосредственно из именованных столбцов. Я переименовал ваши столбцы с помощью rename
m = dict(y='year', m='month', d='day', h='h', min='m')
# rename columns and get rid of datetimetext
df = df[['y', 'm', 'd', 'h', 'min']].rename(columns=m)
df
Затем я выполню преобразование и назначу индекс в один выстрел
df.index = pd.to_datetime(df)
df