#pandas #string #geography
#pandas #строка #география
Вопрос:
существует столбец фрейма данных pandas со значениями широты в виде строк
0 47º 58,46 N
1 48º 06,8 N
2 NaN
3 47º 58,1 N
4 48º 05,0 N
код:
parts = df["Latitud"].str.extract('(d )ºs(d*.d*).([N|S|E|W])', expand=True) #(d )ºs(d*.d*).(.)
df["latitude"] = (parts[0].astype(int) parts[1].astype(float) / 60 ) * parts[3].map({'N':1, 'S':-1, 'E': 1, 'W':-1})
Ошибка:
ValueError: cannot convert float NaN to integer
Как мне пропустить пустые значения NaN?
Ответ №1:
Давайте попробуем пропустить NaN
значения, как было запрошено:
# skip them here
notna = df['Latitud'].notna()
# extract the parts
parts = df.loc[notna, "Latitud"].str.extract('(d )ºs(d*.d*).([N|S|E|W])', expand=True)
# update the data
df.loc[notna, 'latitude'] = (parts[0].astype(int) parts[1].str.replace(',','.').astype(float) / 60 ) * parts[2].map({'N':1, 'S':-1, 'E': 1, 'W':-1})
Вывод:
Latitud latitude
0 47º 58,46 N 47.974333
1 48º 06,8 N 48.113333
2 NaN NaN
3 47º 58,1 N 47.968333
4 48º 05,0 N 48.083333
Комментарии:
1. используемый код, но: «Ошибка значения: невозможно преобразовать значение NaN с плавающей запятой в целое число»