На данный момент (выпуск pandas -1.0.0 ) я действительно рекомендую использовать его осторожно.
Во-первых, это все еще экспериментальный функция:
Экспериментальная: поведение pd.NA
все еще может меняться без предупреждения.
Во-вторых, поведение отличается от np.nan
:
По сравнению с np.nan
, pd.NA
ведет себя по-разному в определенных операциях. В дополнение к арифметическим c операциям pd.NA
также распространяется как «отсутствующие» или «неизвестные» в операциях сравнения.
Обе квоты из заметки о выпуске
Чтобы показать дополнительный пример, я был удивлен поведением интерполяции:
Создайте простой DataFrame:
df = pd.DataFrame({"a": [0, pd.NA, 2], "b": [0, np.nan, 2]})
df
# a b
# 0 0 0.0
# 1 <NA> NaN
# 2 2 2.0
и попробуйте интерполировать:
df.interpolate()
# a b
# 0 0 0.0
# 1 <NA> 1.0
# 2 2 2.0
Есть некоторые причины для этого (я все еще обнаруживаю это), во всяком случае, я просто хочу выделить эти различия - Это экспериментальная функция, и в некоторых случаях она ведет себя по-разному .
Я думаю, что это будет очень полезная функция, но я был бы очень осторожен с такими утверждениями, как "Это должно быть совершенно нормально использовать вместо np.nan
". Это может быть верно для большинства случаев, но может вызвать некоторые проблемы, когда вы не знаете об этом.