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