Я просматриваю демонстрацию pandas и пытаюсь отсортировать массив пустых почтовых индексов в виде строк, но в массиве есть значение nan, которое выдает мне сообщение об ошибке, когда я пытаюсь выполнить np.ndarray.sort ().
Это демонстрация, которой я следую (в [48]): http://nbviewer.jupyter.org/github/jvns/pandas-cookbook/blob/v0.2/cookbook/Chapter%207%20-%20Cleaning%20up%20messy%20data.ipynb
Вот примерные значения (они усекаются из фактического демонстрационного примера)
>>>print(unique_zips)
['11432' '11378' '10032' '10023' '10027' '11372' '11419' '11417' '10011'
nan '10033' '11216' '10016' '10305' '10312' '10026' '10309' '10036']
Вот ошибка
>>>print(unique_zips.sort())
TypeError: unorderable types: float() < str()
Обходной путь
Я обнаружил, что могу обойти эту проблему, предварительно отсортировав список следующим образом:
unique_zips = requests['Incident Zip'].sort_values().unique()
print(unique_zips)
out:
['00083', ... '92123', nan]
Но если я сделаю это, я получу ошибку
unique_zips = requests['Incident Zip'].unique()
print(unique_zips.sort())
out:
TypeError: unorderable types: float() < str()
Я проверил тип nan, и это 'float', который объясняет ошибку float ()
Мое решение - нормальное решение, но я хотел бы понять, почему nan в моем массиве numpy не позволяет мне сортировать массив.Мне не нравится, как я должен сортировать значения, прежде чем я вызову unique ().Это может быть медленнее, а также не идеально, так как я хочу, чтобы мои результаты соответствовали демонстрации, за которой я следую.
Есть ли флаг, который можно установить при сортировке массива numpy для обработки nan?