关于python:使用float类型的NaN创建空pandas DataFrame的优雅方法

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

我想创建一个大熊猫数据框,里面装满了nan。在我的研究中,我找到了一个答案:

1
2
3
import pandas as pd

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

此代码将生成一个数据帧,其中填充"object"类型的nan。因此,以后不能使用它们,例如使用interpolate()方法。因此,我用这个复杂的代码(受这个答案的启发)创建了数据框架:

1
2
3
4
5
6
7
import pandas as pd
import numpy as np

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

df = pd.DataFrame(dummyarray)

这导致了一个数据帧中填充了"float"类型的NaN,因此可以在以后的interpolate()中使用。有没有更优雅的方式来创造同样的结果?


只需将所需的代表作为标量第一个参数传递,如0math.inf或(在本例中)np.nan。然后,构造函数将值数组初始化为indexcolumns指定的大小:

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


在构造数据帧时,可以直接指定数据类型:

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

指定dtype将强制熊猫尝试使用该类型创建数据帧,而不是尝试推断它。


希望这能有所帮助!

1
 pd.DataFrame(np.nan, index = np.arange(<num_rows>), columns = ['A'])

您可以尝试以下代码行:

1
pdDataFrame = pd.DataFrame([np.nan] * 7)

这将创建一个大小为7、NAN类型为float的熊猫数据帧:

如果打印pdDataFrame,输出将是:

1
2
3
4
5
6
7
8
     0
0   NaN
1   NaN
2   NaN
3   NaN
4   NaN
5   NaN
6   NaN

另外,pdDataFrame.dtypes的输出为:

1
2
0    float64
dtype: object