Как использовать функцию градиента numpy с осью datetime x? - PullRequest
0 голосов
/ 20 марта 2019

Я хотел бы построить числовой вывод функции / массива, который имеет ось x даты и времени.

Я использую этот код:

import numpy as np
import pandas as pd

df1 = pd.DataFrame({"x": ["1989-12-31 23:59:12", "1995-12-31 23:59:13", "2009-12-31 23:59:14"], "y": [1, 4, 9]})
df1["date"] = pd.to_datetime(df1.x)
df1.set_index("date", inplace=True)
df1.drop(["x"], axis=1, inplace=True)

И получите с:

df1['derivation'] = np.gradient(df1.y, df1.index)

ошибка:

  File "/home/user/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py", line 1775, in gradient
    a = -(dx2)/(dx1 * (dx1 + dx2))
TypeError: ufunc multiply cannot use operands with types dtype('<m8[ns]') and dtype('<m8[ns]')

И с:

df1['derivation'] = np.gradient(df1.y, df1.index.to_pydatetime())

Я получаю:

 File "/home/user/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py", line 1775, in gradient
    a = -(dx2)/(dx1 * (dx1 + dx2))
TypeError: unsupported operand type(s) for *: 'datetime.timedelta' and 'datetime.timedelta'

Как мне предоставить неэквидистантную ось x в качестве аргумента для np.gradient, чтобы получить правильный результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...