2012-12-31 25 views
11

Sto usando un dataframe panda/pitone. Sto provando a fare una sottrazione di ritardo.Addizione/sottrazione colonna panda

Attualmente sto usando:

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

Questo porta ad un NaN nel primo posto:

NaN 
45 
63 
23 
... 

Prima domanda: E 'questo il modo migliore per fare una sottrazione come questo?

Secondo: Se voglio aggiungere una colonna (stesso numero di righe) a questa nuova colonna. C'è un modo in cui posso fare tutti gli 0 del NaN per il calcolo?

Es:

col_1 = 
Nan 
45 
63 
23 

col_2 = 
10 
10 
10 
10 

new_col = 
10 
55 
73 
33 

e NON

NaN 
55 
73 
33 

Grazie.

risposta

16

Credo che il vostro modo di computing in ritardo è più che bene:

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 

Se si desidera NaN più (o meno) di un numero per essere il numero (non NaN), utilizzare il add (o sub) metodo con 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 
Problemi correlati