numpy 优雅的方式来创建空pandas DataFrame与NaN类型的float

iszxjhcz  于 2023-08-05  发布在  其他
关注(0)|答案(6)|浏览(93)

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

import pandas as pd

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

字符串
这段代码将生成一个DataFrame,其中填充了类型为“object”的NaN。所以它们不能在以后使用,例如interpolate()方法。因此,我用这个复杂的代码(受this answer的启发)创建了DataFrame:

import pandas as pd
import numpy as np

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

df = pd.DataFrame(dummyarray)


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

t8e9dugd

t8e9dugd1#

只需将所需的值作为第一个参数传递,如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

字符串

zhte4eai

zhte4eai2#

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

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

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

9ceoxa92

9ceoxa923#

希望这可以帮助!

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

字符串

svgewumm

svgewumm4#

你可以试试这行代码:

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

字符串
这将创建一个大小为7的pandas dataframe,其NaN类型为float:
如果你打印pdDataFrame,输出将是:

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


pdDataFrame.dtypes的输出也是:

0    float64
dtype: object

wfveoks0

wfveoks05#

对于多列,您可以执行以下操作:

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

字符串

egdjgwm8

egdjgwm86#

你也可以通过重复传递一个空字典。

df= pd.DataFrame([{}]*4, columns=['A'])

字符串

相关问题