mjd*_*mjd 44 python numpy nan dataframe pandas
我想创建一个充满NaN的Pandas DataFrame.在我的研究期间,我找到了答案:
import pandas as pd
df = pd.DataFrame(index=range(0,4),columns=['A'])
Run Code Online (Sandbox Code Playgroud)
此代码导致DataFrame填充了"object"类型的NaN.因此,以后不能使用它们,例如使用该interpolate()
方法.因此,我使用这个复杂的代码创建了DataFrame(灵感来自这个答案):
import pandas as pd
import numpy as np
dummyarray = np.empty((4,1))
dummyarray[:] = np.nan
df = pd.DataFrame(dummyarray)
Run Code Online (Sandbox Code Playgroud)
这导致DataFrame填充了"float"类型的NaN,因此可以在以后使用它interpolate()
.是否有更优雅的方式来创建相同的结果?
ojd*_*jdo 64
只需将所需的代表作为标量第一个参数传递,例如0
,math.inf
或者,在这种情况下np.nan
.然后构造函数将value数组初始化为由index
和指定的大小columns
:
>>> df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A'])
>>> df.dtypes
A float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
Ale*_*ley 11
您可以在构造DataFrame时直接指定dtype:
>>> df = pd.DataFrame(index=range(0,4),columns=['A'], dtype='float')
>>> df.dtypes
A float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
指定dtype会强制Pandas尝试使用该类型创建DataFrame,而不是尝试推断它.
小智 6
希望这可以帮助!
pd.DataFrame(np.nan, index = np.arange(<num_rows>), columns = ['A'])
Run Code Online (Sandbox Code Playgroud)
你可以尝试这行代码:
pdDataFrame = pd.DataFrame([np.nan] * 7)
Run Code Online (Sandbox Code Playgroud)
这将创建一个大小为 7 且 NaN 类型为 float 的 pandas 数据框:
如果打印pdDataFrame
输出将是:
0
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
Run Code Online (Sandbox Code Playgroud)
的输出也是pdDataFrame.dtypes
:
0 float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
小智 5
对于多列,您可以执行以下操作:
df = pd.DataFrame(np.zeros([nrow, ncol])*np.nan)
Run Code Online (Sandbox Code Playgroud)