Df.drop_duulates() в полярах?

import polars as pl

df = pl.DataFrame(
    {
        "X": [4, 2, 3, 4],
        "Y": ["p", "p", "p", "p"],
        "Z": ["b", "b", "b", "b"],
    }
)

Мы знаем, что эквивалент pandas df.drop_duplicates() находится df.unique() в python-polar

Но каждый раз, когда я выполняю свой запрос, я получаю другой результат?

print(df.unique())

X   Y   Z
i64 str str
3   "p" "b"
2   "p" "b"
4   "p" "b"

X   Y   Z
i64 str str
4   "p" "b"
2   "p" "b"
3   "p" "b"

X   Y   Z
i64 str str
2   "p" "b"
3   "p" "b"
4   "p" "b"

Это намеренно и какова причина этого?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
357
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, это намеренное поведение.

Если вам нужно последовательное поведение, выполните следующие действия:

df.unique(maintain_order=True)

Polars.DataFrame.unique

support_order

Сохраняйте тот же порядок, что и исходный DataFrame. Это более затратное вычисление. Установка значения True блокирует возможность запуска на потоковом движке.

Поддержание порядка не подходит для потоковой передачи, поскольку требует объединения всех фрагментов в памяти для сравнения порядка строк.

Благодаря этому изменению настроек по умолчанию разработчики хотят гарантировать, что Polars готова работать с наборами данных всех размеров, позволяя пользователям при желании выбирать другое поведение.

Связанным с этим моментом является выбор того, какая строка в каждой дублируемой группе сохраняется с помощью unique. В Pandas по умолчанию это первая строка каждой дублируемой группы. В Polars значение по умолчанию — any, так как это снова позволяет оптимизировать оптимизацию.

Другие функции, которые имеют такое поведение, включают:

1.group_by (maintain_order: bool = False)

2.partition_by (maintain_order: bool = True)

3.pivot (maintain_order: bool = True)

4.upsample (maintain_order: bool = False)

Подробная статья @LiamBrannigan здесь: https://www.rhosignal.com/posts/polars-ordering/

Другие вопросы по теме