我有一个示例数据框(df
):
Time Price
Equity(231 [IBM]) 2016-05-10 00:00:00+00:00 150.04
Equity(2574 [TSLA]) 2016-04-29 00:00:00+00:00 248.43
我想findy()
使用数据框中的值以及来自其他变量的值在每一行上应用函数,并将这些值存储在新列中Predicted
。
我有这些变量(这些值是从输出中复制的):
high_1 = Equity(231 [IBM]) 151.676
Equity(2574 [TSLA]) 258.310
Equity(0 [AAPL]) 111.710
idx_1 = Equity(231 [IBM]) 2016-04-18 00:00:00+00:00
Equity(2574 [TSLA]) 2016-04-18 00:00:00+00:00
Equity(0 [AAPL]) 2016-04-14 00:00:00+00:00
我想应用这个功能:
def findy(s,Time,Price,idx_1, high_1, idx_last):
idx = [idx_1.loc[s.index], Time]
x = matplotlib.dates.date2num(idx)
y = [high_1.loc[s.index], Price]
coefficients = np.polyfit(x, y, 1)
polynomial = np.poly1d(coefficients)
x_axis = np.linspace(x[0], idx_last + 1, 3) # linspace(start, end, num)
y_axis = polynomial(x_axis)
return Predicted_Value
我尝试使用此代码:
df["Predicted"] = df.apply(lambda s:
findy(s,s['Time'],s['Price'],idx_1,high_1,idx_last))
在lambda
功能,想获得的index
,Time
,Price
每只股票,将其插入功能,并使用这些值内的操作findy()
。但是我收到错误,例如,KeyError: ('Time', 'occurred at index Time')
主要问题是坐在里面lambda
以及如何从行访问值。
如果您想要更多说明,请随时询问。
问题出在您的findy
功能上。第一行尝试做idx_1.loc[s.index]
。的值s.index
类似于Index(['Time', 'Price'], dtype='object')
。然后它在 的索引中寻找 ['Time', 'Price'] idx_1
,但它并不存在。
我认为你必须重新评估你的findy
功能。即使是第一线的工作,你转身并传递结果matplotlib.dates.date2num
,这是期待一个datetime
或序列datetimes
。那不会是idx
包含的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句