2015-05-05 9 views
24

Voglio creare un DataFrame di Pandas pieno di NaNs. Durante la mia ricerca ho trovato an answer:Modo elegante per creare panda vuoti DataFrame con NaN di tipo float

import pandas as pd 

df = pd.DataFrame(index=range(0,4),columns=['A']) 

risultati questo codice in un dataframe pieno di NaNs di tipo "oggetto". Quindi non possono essere utilizzati in seguito, ad esempio con il metodo interpolate(). Pertanto, ho creato il dataframe con questo codice complicato (ispirato this answer):

import pandas as pd 
import numpy as np 

dummyarray = np.empty((4,1)) 
dummyarray[:] = np.nan 

df = pd.DataFrame(dummyarray) 

Ciò provoca un dataframe riempito con NaN di tipo "flottante", in modo che possa essere usato in seguito con interpolate(). C'è un modo più elegante per creare lo stesso risultato?

+0

Ho dovuto inserire dummyarray = np.empty ((4,1)) perché io possa lavorare –

risposta

34

Basta passare il rappresentante desiderato come primo argomento scalare, ad esempio 0, math.inf o, in questo caso, np.nan. Il costruttore quindi inizializza l'array valore alla dimensione specificata da index e columns:

>>> df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A']) 
>>> df.dtypes 
A float64 
dtype: object 
+1

Works for pd.Series. Eccellente! – Bill

10

è possibile specificare il DTYPE direttamente durante la costruzione del dataframe:

>>> df = pd.DataFrame(index=range(0,4),columns=['A'], dtype='float') 
>>> df.dtypes 
A float64 
dtype: object 

Specifica delle forze DTYPE Pandas per provare a creare la dataframe con quel tipo, piuttosto che cercare di dedurre esso.

0

questo sarebbe un buon approccio?

pd.DataFrame(np.nan, index=[], columns=[]) 

Qualsiasi motivo per cui non fa parte della libreria?

Problemi correlati