groupby
で列の値を2列目の値に合計しようとしていますが、3列目の値も考慮して、df
は、パンダ他の列の値に応じて列の合計を集計する方法
memo
が
pos
であれば、それが正と負の、例えばのための
neg
id
和
amount
が、各グループでグループ化する
id memo amount
1 pos 1.0
1 pos 2.0
1 neg 3.0
2 pos 4.0
2 pos 5.0
2 neg 6.0
2 neg 7.0
groupby
1
の場合、-1.0 - 2.0 + 3.0 = 0
であるため、合計量は0です。
df.groupby('id')['amount'].sum()
を実行すると、id
とamount
の列しか考慮されません。ここでもmemo
を考慮する方法がわかります。
ので、結果は2段階の動作を分割
id memo amount total_amount
1 pos 1.0 0.0
1 pos 2.0 0.0
1 neg 3.0 0.0
2 pos 4.0 -4.0
2 pos 5.0 -4.0
2 neg 6.0 -4.0
2 neg 7.0 -4.0
あなたは私が最初のステップ 'のDF [ "TEMP"] = np.where(DF [ "メモ"] ==" NEGに 'numpy.where'を使用することをお勧めコードビット – daiyue
を説明することができます"、-df [" amount "]、df [" amount "])' – user32185
@ user32185:そうですね、少し上手くやっているようです。 'df.amount * np.where(df.memo == 'pos'、1、-1)という妥協案を少しでも打ち負かす。 – fuglede