2017-10-15 4 views
1

Ich habe ein Array:Ersetzen pandas Spaltenwerte mit Array

([ 137.55021238, 125.30017675, 130.20181675, 109.47348838]) 

I die Arraywerte müssen die B-Säule, mit der Indexnummer gleich bleibt ersetzen:

Index a   b   
0  0.671399 Nan 
35  0.446172 Nan 
63  0.614758 Nan 
72  0.634448 Nan 

I versucht zu ersetzen, aber es hat nicht funktioniert. Gibt es eine andere Möglichkeit, dies zu tun, ohne Array in einen Datenrahmen zu verwandeln und zu verschmelzen?

+0

'df [ 'b'] = [137,55021238, 125,30017675 , 130.20181675, 109.47348838] 'Warum wird das nicht funktionieren? –

+0

oh schießen. Ich überschätzte das Problem, das eine so einfache Lösung hatte. Danke @coldspeed. Soll ich diese Frage löschen, die ich gepostet habe? –

+0

Ich denke, das könnte ein Duplikat sein, aber es ist okay, es zu lassen. –

Antwort

3
vals = [137.55021238, 125.30017675, 130.20181675, 109.47348838] 

Option 1
Direkte Zuordnung.

df['b'] = vals 
print(df) 
       a   b 
Index 
0  0.671399 137.550212 
35  0.446172 125.300177 
63  0.614758 130.201817 
72  0.634448 109.473488 

Option 2
df.assign

df = df.assign(b=vals) 
print(df) 
       a   b 
Index 
0  0.671399 137.550212 
35  0.446172 125.300177 
63  0.614758 130.201817 
72  0.634448 109.473488 

Option 3
df.fillna

df.b = df.b.fillna(pd.Series(vals, index=df.index)) 
print(df) 
       a   b 
Index 
0  0.671399 137.550212 
35  0.446172 125.300177 
63  0.614758 130.201817 
72  0.634448 109.473488 

Wenn Ihre Werte sind Nan (string) statt NaN (float), können Sie es konvertieren, mit df.replace:

df = df.replace('Nan', np.nan) 
+0

danke. Ich werde Ihre Antwort in 10 Minuten akzeptieren @coldspeed –

+0

Gut gemacht Antwort – piRSquared

+0

@piRSquared Dachte von dir, wenn Sie den assign schreiben :) –

Verwandte Themen