2017-08-15 6 views
2

私はpandas dfを持っています。「total_load」列から「Battery capacity」列を使って各行の値を追加したいと思います。たとえば、4755 +( - 380)= 4375などです。 明らかに、私が今やっているのは、「バッテリー容量」列のすべての行に対してです:5200 - 「total_load」列の値。どのように私はそれを書くことができる任意のアイデア? forループを使うべきですか?Pandas - 異なる行のDataFrameからの値の追加

df["Battery capacity"] = 5200 + df["total_load"] 

enter image description here

出力のようなものでなければなりません:

time    total_load battery capacity 
2016-06-01 00:00:00 -445  4755 
2016-06-01 01:00:00 -380  4375 
2016-06-01 02:00:00 -350  4025 

ありがとう!

+1

? 'df [" battery capacity "] = 5200 + df [" total_load "]'あなたの例のデータは1行分シフトされているようです(つまり4775は最初の行にあり、-380は2番目の行にあります)シフトされたデータに対して操作を実行したいですか? – Alexander

+0

ちょっとアレックス、今私は常に値 "5200"でtotal_load列から値を引きます。あなたが言及したように、シフトされたデータに対して操作を実行したかったのです。スコット・ボストンが彼の答えで書いたように、それは.cumsum()でうまくいった! – harald12345

答えて

2

IIUC、total_loadの "実行中の合計を" 取得するためにcumsumを使用します。

df['Battery capacity'] = df['total_load'].cumsum() + 5200 

出力:どのようにあなたは今それをやっていると間違って何

     Battery capacity total_load 
time            
2016-01-01 00:00:00   4755.0  -445.0 
2016-01-01 01:00:00   4375.0  -380.0 
2016-01-01 02:00:00   4025.0  -350.0 
2016-01-01 03:00:00   3685.0  -340.0 
+0

ありがとうScott!完璧に動作します。しかし、もう一つの疑問があります。バッテリーの容量が一定の値になったら、私がクマサムを破りたいのですが?たとえば、バッテリーの容量が0に達した場合、私はパンダがそれ以上減算しないようにします。どのように私はこのDFに実装することができますか?たとえば、df ['Battery capacity'] = df ['total_load']。cumsum(バッテリー容量が0の場合は減算を停止)+ 5200。 – harald12345

+0

@ harald12345 np.whereはif-thenステートメントのように見えます。あなたが新しい質問を始めるなら、私は自分自身か誰かがそれにすばやく答えると確信しています。 –

+0

OK、npでも運がいいけど、新しい質問が出るかもしれない!乾杯 – harald12345

関連する問題