【发布时间】:2018-02-05 00:37:38
【问题描述】:
我正在使用 numpy interp 插入数据点,但给出了无法从 dtype 转换数组数据('
代码sn-p:
import pandas as pd
import numpy as np
def interpolate_fwd_price(row, fx):
res = np.interp(row['SA_M'], fx['TENOR_DT'], fx['RATE'])
return res
df = pd.DataFrame({'SA_M': ['2018-02-28','2018-03-10']})
df['SA_M'] = pd.to_datetime(df['SA_M'])
data = pd.DataFrame({'TENOR_DT': ['2017-02-09','2017-03-02','2017-04-03','2017-05-02'], 'RATE':[1.0, 1.2, 1.5, 1.8]})
data['TENOR_DT'] = pd.to_datetime(data['TENOR_DT'])
df['PRICE'] = df.apply(interpolate_fwd_price, fx=data, axis=1)
我进行了一些搜索,但无法找出导致错误的原因。感谢您的意见。
进行一些更改,它可以直接插入日期时间差异而不是直接插入日期时间。仍然有兴趣知道为什么它不能直接插入日期时间。
def interpolate_fwd_price(row, fx):
fx['DT'] = (fx['TENOR_DT'] - row(['SA_M'])).dt.days
res = np.interp(0, fx['DT'], fx['RATE'])
return res
【问题讨论】:
-
当您询问错误时,您应该指出错误发生的位置。有时它有助于查看部分或全部回溯。但我猜你正在尝试做某种数学,也许是插值,它确实适用于日期。
np.datetime64是处理日期时间的数组 dtype。它使用 64 位,但我认为这是一个整数值,而不是浮点数。 -
我应该提到错误发生在最后一行:df['PRICE'] = df.apply(interpolate_fwd_price, fx=data, axis=1)
标签: python pandas numpy interpolation