Panda colonna aggiunta/sottrazione di

Sto usando un panda/python dataframe. Sto cercando di fare un lag di sottrazione.

Attualmente sto usando:

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

Questo porta ad una NaN in primo spot:

NaN
45
63
23
...

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

Secondo: Se voglio aggiungere una colonna (stesso numero di righe) per questa nuova colonna. C’è un modo che io posso fare tutti i NaN 0 per il calcolo?

Ex:

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.

InformationsquelleAutor user1911092 | 2012-12-31



One Reply
  1. 17

    Penso che il tuo metodo di calcolo gal sta proprio 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 volete NaN più (o meno) di un numero è il numero (non NaN), utilizzare il add (o sub) il 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

Lascia un commento