0

次のようなデータフレーム df があります。

          Order Type  Quantity

2015-04-30        Buy       200
2015-05-06        Buy       168
2015-05-08       Sell       368
2015-06-04        Buy       126
2015-06-10        Buy       129
2015-06-17       Sell       255
2015-06-18        Buy       126
2015-06-19       Sell       126
2015-11-06        Buy       159
2016-04-01        Buy       218
2016-06-01        Buy       169

Order Type の値に応じて Quantity 列の値の符号を変更しようとしました (つまり、Buy の場合は正に、Sell の場合は負にします)。

df.loc[df["Order Type"] == "Sell", "Quantity"] *= -1

ただし、これは予想外の結果をもたらします (2 番目と 3 番目の販売値を参照)。

           Order Type  Quantity

2015-04-30        Buy       200
2015-05-06        Buy       168
2015-05-08       Sell      -368
2015-06-04        Buy       126
2015-06-10        Buy       129
2015-06-17       Sell      -368
2015-06-18        Buy       126
2015-06-19       Sell      -368
2015-11-06        Buy       159
2016-04-01        Buy       218
2016-06-01        Buy       169

「署名」列を追加することで、この問題を回避できます。

df['Sign'] = 1
df.loc[df["Order Type"] == "Sell", "Sign"] = -1
df['Quantity'] *= df['Sign']

とにかく問題の原因を突き止めたいと思います。

4

0 に答える 0