2012-12-31 16 views
11

Korzystam z ramki danych pandy/pythona. Próbuję odjąć opóźnienie.Dodawanie/odejmowanie kolumn Pandy

Obecnie używam:

newCol = df.col - df.col.shift() 

Prowadzi to do NaN na pierwszym miejscu:

NaN 
45 
63 
23 
... 

Pierwsze pytanie: Czy to najlepszy sposób, żeby zrobić odejmowanie takiego?

Po drugie: jeśli chcę dodać kolumnę (taką samą liczbę wierszy) do tej nowej kolumny. Czy istnieje sposób, w jaki mogę wykonać wszystkie 0 NaN dla obliczeń?

Ex:

col_1 = 
Nan 
45 
63 
23 

col_2 = 
10 
10 
10 
10 

new_col = 
10 
55 
73 
33 

i NIE

NaN 
55 
73 
33 

Dziękuję.

Odpowiedz

16

Myślę, że metoda wyliczania tyle jest dobrze:

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 

Jeśli chcesz NaN Plus (lub minus) numer będzie numer (nie NaN), użyj add (lub sub) metoda z 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 
Powiązane problemy