使用浮点类型的 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,而不是尝试推断它。
只需将所需的值作为第一个参数传递,例如 0
、math.inf
或此处的 np.nan
。然后构造函数初始化值数组并将其填充到参数 index
和 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
希望对您有所帮助!
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)
我想创建一个 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,而不是尝试推断它。
只需将所需的值作为第一个参数传递,例如 0
、math.inf
或此处的 np.nan
。然后构造函数初始化值数组并将其填充到参数 index
和 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
希望对您有所帮助!
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)