次のようなデータフレーム 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']
とにかく問題の原因を突き止めたいと思います。