[英]How to apply array function (previous row calculation) with pandas group by
我有可以應用於從這篇文章中獲得的Pandas 數據幀的數組函數如何獲取大於或等於 Pandas 中當前行的前一個最近行的數量? 這是我從帖子中獲得的功能
def prev_max_dist(df_col):
v = df_col.astype(float).values
s = v.size
i = np.arange(s)
v = np.full((s, s), v)
v = v - v.T
v[np.triu_indices(s)] = np.nan
r = i - (s - np.argmax(v[:, ::-1] >= 0, axis=1) - 1)
r[r < 0] = 0
return r
此功能可以應用於該帖子中的數據但是此功能不能應用於按熊貓分組的數據我有這樣的數據
Symbol Day Close
a 1 1
a 2 2
a 3 6
a 4 4
a 5 5
a 6 4
a 7 5
b 1 1
b 2 2
b 3 6
b 4 4
b 5 5
b 6 4
b 7 5
我希望這個功能可以應用於符號 A 和 B。
在groupby
/ apply
后使用explode
:
在操作之前['Symbol', 'Day']
您的數據框必須按['Symbol', 'Day']
值排序。
df['pnlr'] = df.groupby('Symbol')['Close'].apply(prev_max_dist).explode().values
>>> df
Symbol Day Close pnlr
0 a 1 1 0
1 a 2 2 0
2 a 3 6 0
3 a 4 4 1
4 a 5 5 2
5 a 6 4 1
6 a 7 5 2
7 b 1 1 0
8 b 2 2 0
9 b 3 6 0
10 b 4 4 1
11 b 5 5 2
12 b 6 4 1
13 b 7 5 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.