11

我正在使用熊猫/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

谢谢你。

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 回答