簡體   English   中英

考慮到前一行的值,將函數應用於pandas數據框列

[英]Apply a function to a pandas dataframe column, considering values of previous rows

df:

375ma

NaN
NaN
NaN
NaN
123
124
168
189
190
200

如何使用以下函數獲取375ma每20 / xx個條目的375ma

def trendline(data, order=1):
    coeffs = np.polyfit(data.index.values, list(data), order)
    slope = coeffs[-2]
    return float(slope)

如果我做:

df['trend'] = trendline(df['375ma'][-5:])

我在所有行中都得到相同的值。

我可能可以使用for循環來執行此操作,是否有其他方法可以執行此操作?

編輯:

使用[-5:]可使函數在375ma列中查找5個值。

謝謝

IIUC,您需要使用rolling后再apply函數,並將參數raw設置為False才能在函數中傳遞一系列,例如:

df['trend'] = df['375ma'].rolling(5).apply(trendline, raw=False)

print (df)
   375ma  trend
0    NaN    NaN
1    NaN    NaN
2    NaN    NaN
3    NaN    NaN
4  123.0    NaN
5  124.0    NaN
6  168.0    NaN
7  189.0    NaN
8  190.0   19.9
9  200.0   17.4

暫無
暫無

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

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