Подтвердить что ты не робот

Pandas добавление/вычитание столбцов

Я использую pandas/python dataframe. Я пытаюсь сделать вычитание с задержкой.

В настоящее время я использую:

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

и NOT

NaN
55
73
33

Спасибо.

4b9b3361

Ответ 1

Я думаю, что ваш метод вычисления лагов очень хорош:

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