Изменить тип столбца на int64 pandas geopandas Best Practice

Я пытаюсь преобразовать столбец, содержащий числа с плавающей запятой, с десятичными знаками только .0 в целое число 64. Я нашел несколько старых ответов на этом форуме, но они не кажутся больше работать. В конце концов я использовал:

df_test["column_name"] = df_test['column_name'].apply(lambda x: np.int64(x))

Мне было интересно, является ли это лучшей практикой в ​​пандах и как это сравнивается с to_numeric()


person Rutger Hofste    schedule 15.02.2018    source источник


Ответы (2)


В pandas это будет работать:

df_test['column_name'] = df_test['column_name'].astype('int64')

так как geopandas построен поверх pandas, это тоже должно работать. Что касается того, как это сравнивается с to_numeric, они оба векторизованы и сопоставимы по скорости:

Тестируя скорость метода astype по сравнению с методом to_numeric для серии небольшого размера, я получил в среднем 0.00007522797584533691 секунд для astype и 0.0003248021602630615 секунд для to_numeric.

person sacuL    schedule 15.02.2018
comment
Большой! Я разобрал np.int64 вместо строки int64 - person Rutger Hofste; 15.02.2018
comment
Хотел бы я принять оба ответа, но сравнение скорости полезно - person Rutger Hofste; 16.02.2018

Ваш лучший вариант, если требуется наиболее оптимальный целочисленный формат:

df_test["column_name"] = pd.to_numeric(df_test['column_name'], downcast='integer')

Это векторизовано, df.series.apply - это петля, и она медленная.

Если вам действительно нужно np.int64, см. решение @sacul.

person jpp    schedule 15.02.2018