gpt4 book ai didi

python - 如何根据列值获取数据帧的最大切片?

转载 作者:行者123 更新时间:2023-12-01 23:44:56 26 4
gpt4 key购买 nike

我正在寻找一个新列,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()],但我不能用它来设置新列:

df.loc[df["EntryBar"].notnull(),"MaxPriceBetweenEntries"] = df.loc[df["EntryBar"]:df["ExitBar"]]["Price"].max()

但这实际上只是一个猜测,因为我正在尝试的任何东西都不起作用。理想情况下,解决方案不会直接涉及循环,因为可能有数百万行。

最佳答案

您可以对非空条目的累积总和进行分组,并取最大值,unsing np.where() 仅适用于非空行::

df['MaxPriceBetweenEntries'] = np.where(df['EntryBar'].notnull(),
df.groupby(df['EntryBar'].notnull().cumsum())['Price'].transform('max'),
np.nan)
df
Out[1]:
idx Price EntryBar ExitBar MaxPriceBetweenEntries
0 0 10.00 0.0 1.0 11.00
1 1 11.00 NaN NaN NaN
2 2 10.15 2.0 4.0 12.14
3 3 12.14 NaN NaN NaN
4 4 10.30 NaN NaN NaN

关于python - 如何根据列值获取数据帧的最大切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64381243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com