我使用的是pandas / python数据帧。我想做一个滞后减法。
我目前正在使用:
newCol = df.col - df.col.shift()
这导致第一个位置出现NaN:
NaN
45
63
23
...
第一个问题:这是这样做减法的最好方法吗?
第二:如果我想向这个新列添加一列(相同的行数)。有没有办法可以让所有NaN的0用于计算?
例如:
col_1 =
Nan
45
63
23
col_2 =
10
10
10
10
new_col =
10
55
73
33
而不是
NaN
55
73
33
谢谢。
答案 0 :(得分: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
1}}:
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