Тип данных Nullable Boolean
Примечание
BooleanArray в настоящее время находится в стадии тестирования. Его API или реализация могут быть изменены без предупреждения.
Новая версия 1.0.0.
Индексирование с значениями NA
pandas позволяет индексировать с помощью значений NA в булевом массиве, которые обрабатываются как False.
Изменено в версии 1.0.2.
In [1]: s = pd.Series([1, 2, 3])
In [2]: mask = pd.array([True, False, pd.NA], dtype="boolean")
In [3]: s[mask]
Out[3]:
0 1
dtype: int64
Если вы хотите сохранить значения NA, вы можете заполнить их вручную значениями fillna(True).
In [4]: s[mask.fillna(True)]
Out[4]:
0 1
2 3
dtype: int64
Логические операции Клини
arrays.BooleanArray реализует логику Клини (иногда называемую логикой с тремя значениями) для логических операций, таких как & (и), | (или) и ^ (исключающее или).
Эта таблица демонстрирует результаты для каждой комбинации. Эти операции симметричны, поэтому перестановка левой и правой сторон не влияет на результат.
Выражение | Результат |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Когда в операции присутствует NA, значение вывода равно NA, только если результат не может быть определен исключительно на основе другого входного значения. Например, True | NA равно True, поскольку оба True | True и True | False являются True. В этом случае нам фактически не нужно рассматривать значение NA.
С другой стороны, True & NA равно NA. Результат зависит от того, действительно ли NA является True или False, поскольку True & True равно True, но True & False равно False, поэтому мы не можем определить выходной результат.
Это отличается от того, как np.nan ведет себя в логических операциях. pandas обрабатывает np.nan как всегда ложное в выводе.
В or
In [5]: pd.Series([True, False, np.nan], dtype="object") | True
Out[5]:
0 True
1 True
2 False
dtype: bool
In [6]: pd.Series([True, False, np.nan], dtype="boolean") | True
Out[6]:
0 True
1 True
2 True
dtype: boolean
В and
In [7]: pd.Series([True, False, np.nan], dtype="object") & True
Out[7]:
0 True
1 False
2 False
dtype: bool
In [8]: pd.Series([True, False, np.nan], dtype="boolean") & True
Out[8]:
0 True
1 False
2 <NA>
dtype: boolean
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/user_guide/boolean.html