11

私はパンダ/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

ではなく

NaN
55
73
33

ありがとうございました。

4

1 に答える 1

17

ラグを計算する方法は問題ないと思います:

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プラス (またはマイナス) の数値を数値 ( ではない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
于 2012-12-31T14:41:17.433 に答える