web-dev-qa-db-ja.com

float型のNaNで空のpandas DataFrameを作成するエレガントな方法

NaNで満たされたPandas DataFrameを作成します。私の研究中に 答え を見つけました

import pandas as pd

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

このコードにより、タイプ「オブジェクト」の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()で使用できます。同じ結果を作成するよりエレガントな方法はありますか?

36
mjd

0math.inf、またはこの場合はnp.nanのように、目的の代表をスカラーの最初の引数として渡すだけです。次に、コンストラクターは、値配列をindexおよびcolumnsで指定されたサイズに初期化します。

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

DataFrameの作成時にdtypeを直接指定できます。

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

Dtypeを指定すると、Pandasは、推論しようとするのではなく、そのタイプのDataFrameを作成しようとします。

11
Alex Riley

これが役立つことを願っています!

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

次のコード行を試すことができます:

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

これにより、float型のNaNでサイズ7のpandasデータフレームが作成されます。

pdDataFrameを出力すると、出力は次のようになります。

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

また、pdDataFrame.dtypesの出力は次のとおりです。

0    float64
dtype: object
1
Yogesh

複数の列の場合:

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