簡體   English   中英

如何在pandas group by中應用數組函數(前一行計算)

[英]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.

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