如何在datetime和float上进行插值

Shi*_*wal 1 python interpolation scipy python-2.7

我正在使用scipy在时间序列上进行1d插值.我的x轴数据是日期时间格式,y轴是浮点数,如:

3/15/2012 16:00:00  32.94
3/16/2012 16:00:00  32.95
3/19/2012 16:00:00  32.61
Run Code Online (Sandbox Code Playgroud)

现在在斜率计算期间slope = (y_hi-y_lo) / (x_hi-x_lo)我得到的错误TypeError: unsupported operand type(s) for /: 'float' and 'datetime.timedelta'是一个明显的错误.有人能指出我正确的方向,如何处理它?

Ffi*_*ydd 6

你的问题是你试图用一个datetime.timedelta对象来划分一个浮点数,就像你说的那样,显然会抛出一个TypeError.

您可以datetime.timedelta使用datetime.timedelta.total_seconds()实例方法将对象转换为表示该timedelta中的总秒数的浮点数.

在这种情况下,您可以将代码修改为:

slope_numerator = y_hi - y_lo
slope_denominator = (x_hi - x_lo).total_seconds()
slope = slope_numerator / slope_denominator
Run Code Online (Sandbox Code Playgroud)

请注意,这将为您提供以秒为单位的斜率.您可以根据您的目的修改分母,以小时,天等方式给出它.