Чтение и преобразование форматированной наносекундной метки времени в формате KDB в панды
Пожалуйста, посмотрите эту выдержку из CSV.
Serial Datetime Value
1 2016-09-29D09:15:01.742144000 5.78
2 2016-09-29D09:15:01.742190000 5.78
3 2016-09-29D09:15:01.742222000 5.78
4 2016-09-29D09:15:01.747254000 5.78
Мне нужно прочитать во 2-м столбце дату и время в наносекундном формате, как показано выше. Использование кода ниже без удачи.
import numpy as np
import pandas as pd
from pandas_datareader import data as web
import matplotlib.pyplot as plt
data = np.loadtxt("gnca.csv", dtype="int,|S30,|float", delimiter = ",")
date_parser=lambda x: pd.to_datetime(x, format="%Y%m%d %H%M%SS")
В последней строке выше я даже не уверен, как указать формат для наносекунд. Также обратите внимание, что дата и время, показанные выше, являются прямыми от KDB с характеристикой "D" между датой и временем.
Огромное спасибо за любые идеи!
1 ответ
IIUC вы можете сделать это следующим образом:
df = pd.read_csv(file_name, skipinitialspace=True)
df.Datetime = pd.to_datetime(df.Datetime, format='%Y-%m-%dD%H:%M:%S.%f')
In [81]: df
Out[81]:
Serial Datetime Value
0 1 2016-09-29 09:15:01.742144 5.78
1 2 2016-09-29 09:15:01.742190 5.78
2 3 2016-09-29 09:15:01.742222 5.78
3 4 2016-09-29 09:15:01.747254 5.78
In [82]: df.dtypes
Out[82]:
Serial int64
Datetime datetime64[ns]
Value float64
dtype: object