2012-12-31 18 views
11

私はpandas/pythonデータフレームを使用しています。私は遅れの減算をしようとしています。パンダの列の加減算

私は現在、使用しています:

newCol = df.col - df.col.shift() 

これは最初の場所にNaNにつながる:

NaN 
45 
63 
23 
... 

最初の質問:これは、このような減算を行うための最善の方法ですか?

2番目:この新しい列に列(同じ行数)を追加する場合。 NaNの計算をすべて0にする方法はありますか?

例:

col_1 = 
Nan 
45 
63 
23 

col_2 = 
10 
10 
10 
10 

new_col = 
10 
55 
73 
33 

とNOT

NaN 
55 
73 
33 

ありがとうございます。

答えて

16

私はコンピューティングのあなたの方法より遅れているだけで罰金だと思う:番号(ないNaN)する番号

import pandas as pd 
df = pd.DataFrame(range(4), columns = ['col']) 

print(df['col'] - df['col'].shift()) 
# 0 NaN 
# 1  1 
# 2  1 
# 3  1 
# Name: col 

print(df['col'] + df['col'].shift()) 
# 0 NaN 
# 1  1 
# 2  3 
# 3  5 
# Name: col 

あなたはNaNプラス(またはマイナス)を希望される場合、add(またはsub)を使用します方法:fill_value = 0

print(df['col'].sub(df['col'].shift(), fill_value = 0)) 
# 0 0 
# 1 1 
# 2 1 
# 3 1 
# Name: col 

print(df['col'].add(df['col'].shift(), fill_value = 0)) 
# 0 0 
# 1 1 
# 2 3 
# 3 5 
# Name: col 
関連する問題