2016-03-26 7 views
0

mit dem folgenden Datenrahmen:Pandas nehmen Wert von Spalten, wenn nicht NaN

import pandas as pd 
import numpy as np 
df = pd.DataFrame({'A':['One','Two',np.nan], 
        'B':[np.nan,np.nan,'Three'], 
        }) 
df 

    A  B 
0 One  NaN 
1 Two  NaN 
2 NaN  Three 

Ich möchte eine Spalte (‚C‘) erzeugen, die den Wert von entweder ‚A‘ oder ‚B‘ erfolgt Wenn es nicht NaN ist wie folgt:

A  B  C 
0 One  NaN  One 
1 Two  NaN  Two 
2 NaN  Three Three 

Vielen Dank im Voraus!

Antwort

1

können Sie combine_first verwenden:

df['C'] = df.A.combine_first(df.B) 
print df     
    A  B  C 
0 One NaN One 
1 Two NaN Two 
2 NaN Three Three 

Oder fillna:

df['C']= df.A.fillna(df.B) 
print df     
    A  B  C 
0 One NaN One 
1 Two NaN Two 
2 NaN Three Three 

Oder np.where und einen Mehrwert, wenn beide Bedingungen falsch z sind 1:

df['C'] = np.where(df.A.notnull(), df.A,np.where(df.B.notnull(), df.B, 1)) 
print df     
    A  B  C 
0 One NaN One 
1 Two NaN Two 
2 NaN Three Three 
Verwandte Themen