Стратегия гипотезы для нескольких серий/столбцов панд без дубликатов

Я хотел бы определить стратегию для создания нескольких столбцов pandas, которые являются уникальными по строкам.

Например, следующие два столбца будут уникальными, так как нет дубликатов двух объединенных столбцов, даже если в самих столбцах есть дубликаты.

>>> c0 c1
0   1  1
1   1  2
3   2  2

Однако эти столбцы не будут уникальными в этом смысле:

>>> c0 c1
0   3  1
1   2  2
3   1  3

Это возможно для одного столбца с unique kwarg, однако не очевидно, как создать несколько столбцов, которые были бы уникальными. Это было бы полезно, например, для создания мультииндекса. Есть ли хороший готовый обходной путь, о котором кто-нибудь знает?


person Kosmonaut    schedule 11.04.2021    source источник
comment
Когда вы говорите, что несколько столбцов будут уникальными, уникальными по отношению к чему? Ни один столбец не равен другому столбцу? Ни один столбец не содержит элементов, которые находятся в другом столбце? Что-то другое?   -  person Zac Hatfield-Dodds    schedule 12.04.2021
comment
Хороший вопрос - я пояснил, что я имел в виду в вопросе.   -  person Kosmonaut    schedule 13.04.2021


Ответы (1)


Основываясь на примерах в вашем вопросе, я думаю, вы имеете в виду столбцы, в которых нет строки, которая является перестановкой любой другой строки.

(более простое, что нет повторяющихся строк, также удовлетворено вашим вторым примером)

В этом случае я бы, вероятно, обратился к базовой lists() стратегии:

lists(
    elements=tuples(integers(), integers()),  # elements for each column
    unique_by=lambda row: tuple(sorted(row))  # or otherwise canonicalise
).map(turn_into_a_dataframe)
person Zac Hatfield-Dodds    schedule 14.04.2021
comment
большое спасибо! Я ценю работу, которую вы вкладываете в этот проект! :) - person Kosmonaut; 14.04.2021