2016-12-07 2 views
0

필자는 'distance'열이있는 팬더 데이터 프레임을 가지고 있으며 'float64'데이터 유형입니다.pandas 데이터 프레임의 부동 소수점을 int로 변환

Distance 
14.827379 
0.754254 
0.2284546 
1.833768 

이 숫자를 정수 (14,0,0,1)로 변환하고 싶습니다. 나는 이걸 시도했지만 "ValueError : NA를 정수로 변환 할 수 없다"라는 오류 메시지가 나타납니다.

df['distance(kmint)'] = result['Distance'].astype('int') 

아무 도움이됩니다.

+1

int로 변환 할 수있는 해킹이 있습니다. 그러나 정수 열에서 NaN 담당자가 부족하면 팬더 [ "gotcha"] (http://pandas.pydata.org/pandas-docs/stable/gotchas.html#support-for-integer-na) – Zero

+0

가능한 중복 [팬더에서 정수로 변환 수레?] (http://stackoverflow.com/questions/21291259/convert-floats-to-ints-in-pandas) – mk2

답변

1

나는이를 사용하여 dataframe에서 NaN의의를 필터링 :

result = result[np.isfinite(result['distance(km)'])] 

을 그리고, 내가 INT로 부동 소수점으로 변환 할 수 있었다.

0

대체 방법은 데이터 가져 오기 및 정리 프로세스의 일부로 NaN 값을 변환하는 것입니다. 좀 더 일반화 된 솔루션에는 na_values ​​플래그를 설정하여 read_table 명령에서 NaN 값을 지정하는 작업이 포함될 수 있습니다. 당신이 원하는 것은 당신의 필드 중 하나에 1.5km와 같은 malfored 데이터가 NaN 값으로 선택되지 않는다는 것입니다. dataframe이 채워되고 NaN의 값이 제대로 확인되면

pandas.read_table(..., na_values=None, keep_default_na=True, na_filter=True, ....) 

그 후, 당신은 제로 또는 당신이 당신의 거리로 식별 값을 대체 할 수 fillna 방법을 사용할 수 있습니다. 마지막으로 대 isfinite을 사용하여 정수를 정수로 변환하는 것이 가장 좋습니다.

관련 문제