2

すべての観測値に対して 2 つの列 (v3 と v7) が空白になっている csv ファイルがあります。

v1,v2,v3,v4,v5,v6,v7
GNB,1980,,20,-1.168689,0.4619077,
GNB,1981,20,-1.185176,0.4619077,

csv2rec 関数を使用して、これを python (epd-7.0-2) に読み込んでいます。

from pylab import rec2csv, csv2rec
all_data = csv2rec(infile)

3 行目または 7 行目の値を拡張しようとすると、エラーが発生します (他の列では発生しません)。

all_data = csv2rec(infile)
all_data.v3 = 'test'

RuntimeError: オブジェクト配列で setfield を呼び出せません

そのため、タイプを変更してみましたが、他のエラーが発生するだけでした:

all_data.v3.dtype = '|S30'
TypeError: Cannot change data-type for object array.

追加の問題は、配列内の他の列も変更できないことです。

all_data.v1 = 'test'
RuntimeError: cannot call setfield on an object array

考え?ありがとう、

4

1 に答える 1

2

.astype次の方法を使用します。

all_data.astype(dtype=[('v1', 'S3'), ('v2', '<i4'), ('v3', '|S30'), ('v4', '<f8'), ('v5', '<f8'), ('v6', '<f8'), ('v7', 'O')])
#rec.array([('GNB', 1980, '-1', 20.0, -1.168689, 0.4619077, None),
#           ('GNB', 1981, '20', -1.185176, 0.4619077, nan, None)], 
#             dtype=[('v1', 'S3'), ('v2', '<i4'), ('v3', 'S30'), ('v4', '<f8'), ('v5', '<f8'), ('v6', '<f8'), ('v7', 'O')])
于 2013-05-17T05:21:25.463 に答える