Je veux créer un Pandas DataFrame rempli de NaN. Au cours de mes recherches, j'ai trouvé ne réponse :
import pandas as pd
df = pd.DataFrame(index=range(0,4),columns=['A'])
Ce code génère un DataFrame rempli de NaN de type "objet". Ils ne peuvent donc plus être utilisés ultérieurement, par exemple avec la méthode interpolate()
. Par conséquent, j'ai créé le DataFrame avec ce code compliqué (inspiré par cette réponse ):
import pandas as pd
import numpy as np
dummyarray = np.empty((4,1))
dummyarray[:] = np.nan
df = pd.DataFrame(dummyarray)
Cela se traduit par un DataFrame rempli avec NaN de type "float", de sorte qu'il peut être utilisé ultérieurement avec interpolate()
. Existe-t-il un moyen plus élégant de créer le même résultat?
Passez simplement le représentant souhaité en tant que premier argument scalaire, comme 0
, math.inf
ou, dans ce cas, np.nan
. Le constructeur initialise ensuite le tableau de valeurs à la taille spécifiée par index
et columns
:
>>> df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A'])
>>> df.dtypes
A float64
dtype: object
Vous pouvez spécifier le type directement lors de la construction du DataFrame:
>>> df = pd.DataFrame(index=range(0,4),columns=['A'], dtype='float')
>>> df.dtypes
A float64
dtype: object
Spécifier le type force oblige Pandas pour essayer de créer le DataFrame avec ce type, plutôt que d'essayer de l'inférer.
J'espère que cela peut aider!
pd.DataFrame(np.nan, index = np.arange(<num_rows>), columns = ['A'])
Vous pouvez essayer cette ligne de code:
pdDataFrame = pd.DataFrame([np.nan] * 7)
Cela créera un pandas dataframe de taille 7 avec NaN de type float:
si vous imprimez pdDataFrame
, le résultat sera:
0
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
Aussi la sortie pour pdDataFrame.dtypes
est:
0 float64
dtype: object
Pour plusieurs colonnes, vous pouvez faire:
df = pd.DataFrame(np.zeros([nrow, ncol])*np.nan)