2016-12-07 2 views
0

У меня есть рамка данных pandas со столбцом «расстояние», и она имеет тип данных «float64».Преобразование поплавков в ints в pandas dataframe

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 rep в целых столбцах - панды [«gotcha»] (http://pandas.pydata.org/pandas-docs/stable/gotchas.html#support-for-integer-na) – Zero

+0

Возможный дубликат из [Конвертировать поплавки в ints в Pandas?] (http://stackoverflow.com/questions/21291259/convert-floats-to-ints-in-pandas) – mk2

ответ

1

Я фильтруются в Нан из dataframe с помощью этого:

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

Тогда, я был в состоянии преобразовать с плавающей точкой в ​​междунар.

0

Альтернативный подход заключается в преобразовании значений NaN как части процессов импорта и очистки данных. Более обобщенное решение может включать указание значений, которые являются NaN в команде read_table, установив флаг na_values. То, что вы хотите убедиться в том, что в одном из ваших полей нет каких-либо недостоверных данных, таких как 1,5 км, которые получают в качестве значения NaN.

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

Впоследствии, когда dataframe заполняется и значение NaN идентифицированы должным образом, вы можете использовать метод fillna заменить нули или значений, которые вы определили, как ваши расстояния. Наконец, было бы лучше всего использовать notnull по сравнению с isfinite, чтобы преобразовать значение в целые числа.

Смежные вопросы