2011-08-15 8 views
1

np.rec.fromrecords에 대한 단일 호출을 사용하여 튜플 목록을 numpy 재 배열로 변환 할 때 None 값을 처리하는 적절한 방법이 있습니까?처리 numpy 재 배열로 변환 할 때 값 없음

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') 

나는이에이 작업을 수행해야 할 것 같은데요 : 가정 나는 누락 된 값 (예 : -1 정수의), 어떻게 붙잡는를하고 아래의 인위적인 예를 처리하는 것을 알고 재 배열의 다른 곳에서 실제 TypeErrors가 누락되지 않도록하기 위해 필드 당 기준. 을 분리하는 방법이 있습니까?이 변환을 적용하려는 재 배열에서 (즉, 어떤 필드)이 필요합니까? 내 진짜 사용 사례 pyodbc 레코드를 numpy recarrays 변환하는 것입니다.

+1

pyodbc 호출은 어떤 데이터 소스 (Oracle, SQL Server 등)에 대해 수행되며 쿼리를 변경할 수 있습니까? – Bryan

+1

에 대한 SQL Server. 나는 네가하는 말을 이해한다고 생각한다. CAST를 사용하여 DB 측에서 NULL을 -1로 변환하십시오. 그건 의미가 있습니다. – grovduck

답변

1

반환 -1과 같이 데이터베이스 쿼리, 뭔가를 사용하여 NULL 열 값 :

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

이 반환 -1, 그렇지 않으면 실제 값이 반환됩니다 NULL이다의 ColumnName 값에 대해. 필요한 경우 COALESCE here에 대한 설명서. 이렇게하면 필요한 열에 대해서만 NULL 대체 값을 제공 할 수 있으며 걱정해야 할 예외 인 TypeError을 마스크하지 않습니다.

+0

도움을 주셔서 감사합니다. 이것은 나의 유스 케이스에 대해 이것을 처리하는 더 합리적인 방법 인 것 같다. – grovduck