0
ナンシーint配列は欠損値を格納できません。欠損値を持つint配列numpy
>>> import numpy as np
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> myArray = np.arange(10)
>>> myArray.dtype
dtype('int32')
>>> myArray[0] = None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
>>> myArray.astype(dtype = 'float')
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
>>> myFloatArray = myArray.astype(dtype = 'float')
>>> myFloatArray[0] = None
>>> myFloatArray
array([ nan, 1., 2., 3., 4., 5., 6., 7., 8., 9.])
パンダはこれについてドキュメント - Caveats and Gotchas, Support for int NAで警告します。 Wes McKinneyもこの点を繰り返し述べていますstack question
欠損値をint配列に格納する必要があります。私はさまざまなサイズのintだけを受け入れるように設定したデータベースに行を挿入しています。
現時点では、int型とNone型の両方を要素として保持できるオブジェクトとして配列を格納しています。
>>> myArray.astype(dtype = 'object')
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=object)
>>> myObjectArray = myArray.astype(dtype = 'object')
>>> myObjectArray[0] = None
>>> myObjectArray
array([None, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=object)
これは、大量のデータセットではメモリが大量で時間がかかるようです。 numpyの開発が進んでいる間に誰かがより良い解決策を持っているのだろうかと思っていました。
'numpy.ma.MaskedArray'についてはどうですか? – MSeifert
興味深い。それがパンダで動作するかどうか知っていますか? – Nirvan
ちょっとハッキリかもしれません。それらの欠損値を埋めるために指定された整数を割り当てることはできませんか?欠損値のみを埋めるために、このような整数値を予約することができます。なぜあなたは欠損値の代わりに 'None'だけを挿入したいのですか? – kmario23