2017-11-13 1 views
1

Gegeben eine pd.Series, ich möchte Null-Werte durch eine Liste ersetzen. Das heißt, gegeben:Füllen Nullen mit einer Liste in Pandas mit fillna

import numpy as np 
import pandas as pd 
ser = pd.Series([0,1,np.nan]) 

Ich möchte eine Funktion, die

0  0 
1  1 
2 [nan] 

zurückkehren würde Aber wenn ich versuche, die natürliche Funktion für diese Verwendung, nämlich fillna:

result = ser.fillna([np.nan]) 

aber ich der Fehler

TypeError: "value" parameter must be a scalar or dict, but you passed a "list"

Irgendwelche Vorschläge für eine einfache Möglichkeit, dies zu erreichen?

+1

Dies ist Bug, https einzuwenden: //github.com/pandas-dev/pandas/issues/3435, BTW, warum brauchst du das? – Wen

Antwort

1

Verwenden apply, weil fillna mit Skalare arbeiten nur:

print (ser.apply(lambda x: [np.nan] if pd.isnull(x) else x)) 
0  0 
1  1 
2 [nan] 
dtype: object 
2

Sie ändern können

ser=ser.astype('object') 

Dann weisen die Liste np.nan

ser.loc[ser.isnull()]=[[np.nan]] 
Verwandte Themen