我有一个样本数据框(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
里面,以及如何从行中访问值。
如果你想要更多的澄清随时问。
我认为你只需要添加一个额外的参数来应用你的调用。 ''df [“Predicted”] = df.apply(lambda s:findy(s,s ['Time'],s ['Price'],idx_1,high_1,idx_last),1)'会告诉它应用row by行。现在,它正试图逐列。 – JCVanHamme
你的意思是'axis = 1'?我尝试过,但我仍然得到错误。 – ArJuN
错误是相同还是不同? – JCVanHamme