Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elegant way to create empty pandas DataFrame with NaN of type float

I want to create a Pandas DataFrame filled with NaNs. During my research I found an answer:

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

This code results in a DataFrame filled with NaNs of type "object". So they cannot be used later on for example with the interpolate() method. Therefore, I created the DataFrame with this complicated code (inspired by this answer):

import pandas as pd import numpy as np  dummyarray = np.empty((4,1)) dummyarray[:] = np.nan  df = pd.DataFrame(dummyarray) 

This results in a DataFrame filled with NaN of type "float", so it can be used later on with interpolate(). Is there a more elegant way to create the same result?

like image 750
mjd Avatar asked May 05 '15 12:05

mjd


People also ask

Is NaN float pandas?

nan . In Working with missing data, we saw that pandas primarily uses NaN to represent missing data. Because NaN is a float, this forces an array of integers with any missing values to become floating point.

How do you change NaN to blank in pandas?

Convert Nan to Empty String in PandasUse df. replace(np. nan,'',regex=True) method to replace all NaN values to an empty string in the Pandas DataFrame column.

How can you create an empty DataFrame in pandas?

You can create an empty dataframe by importing pandas from the python library. Later, using the pd. DataFrame(), create an empty dataframe without rows and columns as shown in the below example.


1 Answers

Simply pass the desired value as first argument, like 0, math.inf or, here, np.nan. The constructor then initializes and fills the value array to the size specified by arguments index and columns:

>>> import numpy as np >>> import pandas as pd >>> df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B'])  >>> df     A   B 0 NaN NaN 1 NaN NaN 2 NaN NaN 3 NaN NaN  >>> df.dtypes A    float64 B    float64 dtype: object 
like image 73
ojdo Avatar answered Sep 23 '22 04:09

ojdo