Преобразовать столбец данных в 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

введите описание изображения здесь

Другие вопросы по тегам