我希望创建一个新列,MaxPriceBetweenEntries
基于数据帧片段的max()
idx Price EntryBar ExitBar
0 10.00 0 1
1 11.00 NaN NaN
2 10.15 2 4
3 12.14 NaN NaN
4 10.30 NaN NaN
变成
idx Price EntryBar ExitBar MaxPriceBetweenEntries
0 10.00 0 1 11.00
1 11.00 NaN NaN NaN
2 10.15 2 4 12.14
3 12.14 NaN NaN NaN
4 10.30 NaN NaN NaN
我可以使用df.loc[df["EntryBar"].notnull()]
和df.loc[df["ExitBar"].notnull()]
获取具有EntryBar或ExitBar值的所有行,但我不能使用该值设置新列:
df.loc[df["EntryBar"].notnull(),"MaxPriceBetweenEntries"] = df.loc[df["EntryBar"]:df["ExitBar"]]["Price"].max()
但在这一点上,这实际上是一个猜测,因为我所尝试的一切都不起作用。理想情况下,解决方案不会直接涉及循环,因为可能有数百万行
您可以按条目分组向前填充空值,并获取该组价格的最大值。用它作为左连接的右侧,你应该在业务中
让我们试试
groupby()
和where
:输出:
您可以按非空项的累计和进行分组,并将最大值unsing
np.where()
仅应用于非空行:相关问题 更多 >
编程相关推荐