簡體   English   中英

如何在數據框上應用功能

[英]How to apply function on a dataframe

我有一個示例Dataframe( 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()值以及其他變量的值在每行上應用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函數中,嘗試獲取每個股票的indexTimePrice並將其插入該函數,並將這些值用於findy()內的操作。 但是出現諸如KeyError: ('Time', 'occurred at index Time') 。主要問題在於lambda內部以及如何從行訪問值。

如果您想進一步澄清,請隨時提出。

問題出在您的findy功能上。 第一行嘗試執行idx_1.loc[s.index] s.index的值類似於Index(['Time', 'Price'], dtype='object') 然后,它在idx_1的索引中尋找['Time','Price'],該索引不存在。

我認為您必須重新評估自己的findy功能。 即使是第一線的工作,你轉身並傳遞結果matplotlib.dates.date2num ,這是期待一個datetime或序列datetimes 這將不是idx包含的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM