2017-03-07 20 views
0

Ich habe es schwer, einen DataFrame mit None-Werten zu erstellen. Dazu mehrere Schritte, die ich ausführen, aber ich glaube, dass ich die gleichen Ergebnisse unter Verwendung eines Pandas' Funktion ...initialisiere Pandas Dataframe mit None

mydata = [] 
mydata.append([None, None, None, None]) 
mydata = np.array(mydata) 
mydata = pd.DataFrame(mydata, columns='Start','End','Duration']) 

Gibt es einen Befehl, um die gleichen Ergebnisse zu bekommen bekommen?

Antwort

1

Ich glaube, Sie brauchen reshapenumpy array von list erstellt:

mydata = pd.DataFrame(np.array([None, None, None]).reshape(-1,3), 
         columns=['Start','End','Duration']) 
print (mydata) 
    Start End Duration 
0 None None  None 

Eine weitere slowier Lösung mit [[]]:

mydata = pd.DataFrame([[None, None, None]], columns=['Start','End','Duration']) 
print (mydata) 
    Start End Duration 
0 None None  None 

Wenn Verwendung columns und index Werte sind alle Daten NaN und ist möglich replace sie None:

print (pd.DataFrame(columns=['Start','End','Duration'], index=[0])) 
    Start End Duration 
0 NaN NaN  NaN 

mydata = pd.DataFrame(columns=['Start','End','Duration'], index=[0]).replace({np.nan:None}) 
print (mydata) 
    Start End Duration 
0 None None  None 
0

wäre Ein andere Methode:

pd.DataFrame({'Start':[None],'End':[None],'Duration':[None]}) 
0

Hier ist ein schneller Einzeiler:

>>> pd.DataFrame(np.empty((4,3),dtype=pd.Timestamp),columns=['Start','End','Duration']) 
    Start End Duration 
0 None None  None 
1 None None  None 
2 None None  None 
3 None None  None 

Im Allgemeinen ist ein Einzeiler würde wie:

>>> pd.DataFrame(np.empty((5,3),dtype=object),columns=['Start','End','Duration']) 
    Start End Duration 
0 None None  None 
1 None None  None 
2 None None  None 
3 None None  None 
4 None None  None 

Hier ist ein NaN-Einstrich:

>>> pd.DataFrame(np.empty((2,3))*np.nan,columns=['Start','End','Duration']) 
    Start End Duration 
0 NaN NaN  NaN 
1 NaN NaN  NaN