我正在使用pandas/python数据帧.我想做一个滞后减法.
我目前正在使用:
newCol = df.col - df.col.shift()
Run Code Online (Sandbox Code Playgroud)
这导致第一点出现NaN:
NaN
45
63
23
...
Run Code Online (Sandbox Code Playgroud)
第一个问题:这是这样做减法的最好方法吗?
第二:如果我想向这个新列添加一列(相同的行数).有没有办法可以让所有NaN的0用于计算?
例如:
col_1 =
Nan
45
63
23
col_2 =
10
10
10
10
new_col =
10
55
73
33
Run Code Online (Sandbox Code Playgroud)
并不是
NaN
55
73
33
Run Code Online (Sandbox Code Playgroud)
谢谢.
unu*_*tbu 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
Run Code Online (Sandbox Code Playgroud)
如果您希望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
Run Code Online (Sandbox Code Playgroud)