Pandas列加/减

时间:2012-12-31 13:28:27

标签: python pandas

我使用的是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

谢谢。

1 个答案:

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