繁体   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