使用浮点类型的 NaN 创建空 pandas DataFrame 的优雅方法

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

我想创建一个 Pandas 填充 NaN 的 DataFrame。在我的研究过程中,我发现 an answer:

import pandas as pd

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

此代码生成一个填充了 "object" 类型 NaN 的 DataFrame。因此它们不能在以后使用,例如 interpolate() 方法。因此,我用这个复杂的代码创建了 DataFrame(灵感来自 this answer):

import pandas as pd
import numpy as np

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

df = pd.DataFrame(dummyarray)

这会生成一个填充了类型为 "float" 的 NaN 的 DataFrame,因此稍后可以将其与 interpolate() 一起使用。有没有更优雅的方法来创建相同的结果?

构造DataFrame时可以直接指定dtype:

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

指定 dtype 会强制 Pandas 尝试使用该类型创建 DataFrame,而不是尝试推断它。

只需将所需的值作为第一个参数传递,例如 0math.inf 或此处的 np.nan。然后构造函数初始化值数组并将其填充到参数 indexcolumns:

指定的大小
>>> 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

希望对您有所帮助!

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

你可以试试这行代码:

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

这将创建一个 pandas 大小为 7 且 NaN 为 float 类型的数据框:

如果你打印 pdDataFrame 输出将是:

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

pdDataFrame.dtypes 的输出也是:

0    float64
dtype: object

对于多列你可以这样做:

df = pd.DataFrame(np.zeros([nrow, ncol])*np.nan)