1

np.rec.fromrecordsへの1回の呼び出しを使用して、タプルのリストをnumpy再配列に変換する際に、None値を適切に処理する方法はありますか?欠落している値(整数の場合は-1など)がわかっていると仮定して、以下の不自然な例をキャッチして処理するにはどうすればよいですか。

import numpy as np
a = [('Bob', 40, 3.14), ('Sue', 38, 6.28), ('Jim', None, 9.42)]
dtype = [('NAME', 'S10'), ('AGE', np.int32), ('SCORE', np.float64)]
try:
    b = np.rec.fromrecords(a, dtype=dtype)
except TypeError:
    # Convert None to 0 for AGE field here instead of raising the error
    raise TypeError('Caught a TypeError')

リアレイの他の場所で真のTypeErrorが欠落しないようにするには、フィールドごとにこれを実行する必要があると思います。この変換を適用したい再配列のどこ(つまり、どのフィールド)を分離する方法はありますか?私の実際のユースケースは、pyodbcレコードをnumpy再配列に変換することです。

4

1 に答える 1

1

データベースクエリを使用してNULL列値に対して-1を返します。次のようになります。

SELECT COALESCE(ColumnName, -1) FROM Schema.Table;

これにより、NULLのColumnName値に対して-1が返されます。それ以外の場合は、実際の値が返されます。必要に応じて、ここにCOALESCEのドキュメントがあります。これにより、必要な列にのみNULL置換値を指定でき、TypeError注意が必要な例外をマスクしません。

于 2011-08-31T14:19:01.827 に答える