データフレームには数量と価格の2つの列があります。平均購入価格を計算するDataFrame
df = pd.DataFrame([
[ 1, 5],
[-1, 6],
[ 2, 3],
[-1, 2],
[-1, 4],
[ 1, 2],
[ 1, 3],
[ 1, 4],
[-2, 5]], columns=['quantity', 'price'])
df['amount'] = df['quantity'] * df['price']
df['cum_qty'] = df['quantity'].cumsum()
私は2つの新しい列の量とcum_qty(累積量)を追加しました。私は、平均購入価格を計算したい
quantity price amount cum_qty
0 1 5 5 1
1 -1 6 -6 0
2 2 3 6 2
3 -1 2 -2 1
4 -1 4 -4 0
5 1 2 2 1
6 1 3 3 2
7 1 4 4 3
8 -2 5 -10 1
: は今、データフレームは、この(正量が負の数量が販売表し、買いを表します)のように見えます。
cum_qty = 0の場合、qantityとamountはゼロにリセットする必要があります。 したがって、index = [5,6,7]の行を見ています。 各行ごとに1つのアイテムが価格2,3,4で購入されます。つまり、平均価格3 [(2 + 3 + 4)/ 3]で3個ずつ在庫しています。
インデックス= 8での販売は、(トランザクションを売る購入価格は変更されません)が起こった後、私は価格で1各3
を持っていますが、基本的に、私は累積的で、すべての累積購入金額を分割する必要がありますゼロでない最後の累積数量からの数量。
pandas DataFrameを使用しているすべての取引の結果として手元に買い物をする方法は?
あなたの予想される出力は何ですか?株式取引シミュレーションについて話しているなら、私は 'for loop'を提案します – Wen