这是我的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从我执行卖出操作的行中获取价格(卖出列中的真值)
只需将行移到有价格的地方即可。将其分配为新列时,sell
pandas会自动将其与索引对齐。
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] 删除。
我来说两句