熊猫条件转移

伊戈尔·K。

这是我的DataFrame

                 dt_object     price  buy  
311684 2020-12-24 18:15:00  73.98250  NaN   
311685 2020-12-24 18:30:00       NaN  NaN   
311686 2020-12-24 18:45:00  73.98520  NaN   
311687 2020-12-24 19:00:00  74.16250 True   
311688 2020-12-24 19:15:00  74.06500  NaN   
311689 2020-12-24 19:30:00  74.01000  NaN   
311690 2020-12-24 19:45:00  74.12690  NaN  
311691 2020-12-24 20:00:00  74.04500  NaN   
311692 2020-12-24 20:15:00  74.05090  NaN   
311693 2020-12-24 20:30:00       NaN  NaN   
311694 2020-12-24 20:45:00  74.02670  NaN   
311695 2020-12-24 21:00:00  73.99356 True   
311696 2020-12-24 21:15:00  74.01461  NaN   
311697 2020-12-24 21:30:00  74.02120  NaN   
311698 2020-12-24 21:45:00  73.95500  NaN  
311699 2020-12-24 22:00:00  73.95800  NaN   
311700 2020-12-24 22:15:00  73.95900  NaN   
311701 2020-12-24 22:30:00  73.98760  NaN   
311702 2020-12-24 22:45:00  73.98100 True   
311703 2020-12-24 23:00:00  73.90500  NaN   
311704 2020-12-24 23:15:00  73.91300  NaN   
311705 2020-12-24 23:30:00       NaN  NaN   
311706 2020-12-24 23:45:00       NaN  NaN   
311707 2020-12-25 00:00:00  74.06600  NaN  
311708 2020-12-25 00:15:00  73.97810  NaN   
311709 2020-12-25 00:30:00  74.00020  NaN
311710 2020-12-25 00:45:00  73.81300  NaN
311711 2020-12-25 01:00:00  73.99950  NaN

在“购买”列中,您可以看到我在哪里购买股票。我想在下面三行出售。但是,如果此行中的价格NaN,我想以有效价格在下一行中出售。
因此,预期输出为:

                 dt_object     price  buy  sell
311684 2020-12-24 18:15:00  73.98250  NaN   NaN
311685 2020-12-24 18:30:00       NaN  NaN   NaN
311686 2020-12-24 18:45:00  73.98520  NaN   NaN
311687 2020-12-24 19:00:00  74.16250 True   NaN
311688 2020-12-24 19:15:00  74.06500  NaN   NaN
311689 2020-12-24 19:30:00  74.01000  NaN   NaN
311690 2020-12-24 19:45:00  74.12690  NaN  True
311691 2020-12-24 20:00:00  74.04500  NaN   NaN
311692 2020-12-24 20:15:00  74.05090  NaN   NaN
311693 2020-12-24 20:30:00       NaN  NaN   NaN
311694 2020-12-24 20:45:00  74.02670  NaN   NaN
311695 2020-12-24 21:00:00  73.99356 True   NaN
311696 2020-12-24 21:15:00  74.01461  NaN   NaN
311697 2020-12-24 21:30:00  74.02120  NaN   NaN
311698 2020-12-24 21:45:00  73.95500  NaN  True
311699 2020-12-24 22:00:00  73.95800  NaN   NaN
311700 2020-12-24 22:15:00  73.95900  NaN   NaN
311701 2020-12-24 22:30:00  73.98760  NaN   NaN
311702 2020-12-24 22:45:00  73.98100 True   NaN
311703 2020-12-24 23:00:00  73.90500  NaN   NaN
311704 2020-12-24 23:15:00  73.91300  NaN   NaN
311705 2020-12-24 23:30:00       NaN  NaN   NaN
311706 2020-12-24 23:45:00       NaN  NaN   NaN
311707 2020-12-25 00:00:00  74.06600  NaN  True
311708 2020-12-25 00:15:00  73.97810  NaN   NaN
311709 2020-12-25 00:30:00  74.00020  NaN   NaN
311710 2020-12-25 00:45:00  73.81300  NaN   NaN
311711 2020-12-25 01:00:00  73.99950  NaN   NaN

如何用熊猫填充销售栏?我知道移位方法。但这不能在这里使用,因为我在列价格中NaN

更新
我的问题的第一部分得到了Stef的完美回答。让我问你第二部分。
我想在执行购买操作的行中看到卖价。它让我连续看到买卖价格。
预期产量:

                 dt_object     price  buy  sell   sell_price
311684 2020-12-24 18:15:00  73.98250  NaN   NaN          NaN
311685 2020-12-24 18:30:00       NaN  NaN   NaN          NaN
311686 2020-12-24 18:45:00  73.98520  NaN   NaN          NaN
311687 2020-12-24 19:00:00  74.16250 True   NaN     74.12690
311688 2020-12-24 19:15:00  74.06500  NaN   NaN          NaN
311689 2020-12-24 19:30:00  74.01000  NaN   NaN          NaN
311690 2020-12-24 19:45:00  74.12690  NaN  True          NaN
311691 2020-12-24 20:00:00  74.04500  NaN   NaN          NaN
311692 2020-12-24 20:15:00  74.05090  NaN   NaN          NaN
311693 2020-12-24 20:30:00       NaN  NaN   NaN          NaN
311694 2020-12-24 20:45:00  74.02670  NaN   NaN          NaN
311695 2020-12-24 21:00:00  73.99356 True   NaN     73.95500  
311696 2020-12-24 21:15:00  74.01461  NaN   NaN          NaN
311697 2020-12-24 21:30:00  74.02120  NaN   NaN          NaN
311698 2020-12-24 21:45:00  73.95500  NaN  True          NaN
311699 2020-12-24 22:00:00  73.95800  NaN   NaN          NaN
311700 2020-12-24 22:15:00  73.95900  NaN   NaN          NaN
311701 2020-12-24 22:30:00  73.98760  NaN   NaN          NaN
311702 2020-12-24 22:45:00  73.98100 True   NaN     74.06600
311703 2020-12-24 23:00:00  73.90500  NaN   NaN          NaN
311704 2020-12-24 23:15:00  73.91300  NaN   NaN          NaN
311705 2020-12-24 23:30:00       NaN  NaN   NaN          NaN
311706 2020-12-24 23:45:00       NaN  NaN   NaN          NaN
311707 2020-12-25 00:00:00  74.06600  NaN  True          NaN
311708 2020-12-25 00:15:00  73.97810  NaN   NaN          NaN
311709 2020-12-25 00:30:00  74.00020  NaN   NaN          NaN
311710 2020-12-25 00:45:00  73.81300  NaN   NaN          NaN
311711 2020-12-25 01:00:00  73.99950  NaN   NaN          NaN

sell_price从我执行卖出操作的行中获取价格(卖出列中的真值

斯蒂夫

只需将行移到有价格的地方即可。将其分配为新列时,sellpandas会自动将其与索引对齐。

df['sell'] = df[df.price.notna()].buy.shift(3)

甚至df.loc[df.price.notna(), 'buy'].shift(3)按照下面的@ansev的评论更好


更新:要添加卖出行中的卖出价格,我们可以使用相同的方法,反之亦然:

df['sell_price'] = df.loc[df.price.notna(), 'price'].shift(-3).loc[df.buy.fillna(False)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章