Я пытаюсь создать список ребер (уникальный набор a; b, a; c, a; f и т. Д., Где a; b == b; a) из очень большого (длинного) кадра данных pandas, которыйимеет две колонки.Требуемые граничные списки находятся между всеми комбинациями строк одного столбца, условно для другого столбца, имеющего одинаковое значение.Пример ниже показывает это:
df1 = pd.DataFrame({'A':['Mary', 'Mary', 'Mary', 'Clive','Clive','Clive', 'John', 'John'],
'B':['Apples','Oranges','Strawberries','Apples','Pears','Bananas','Bananas','Pears']})
И этот фрейм данных выглядит так:
A B
0 Mary Apples
1 Mary Oranges
2 Mary Strawberries
3 Clive Apples
4 Clive Pears
5 Clive Bananas
6 John Bananas
7 John Pears
с предполагаемым выводом, похожим на это:
Apples; Oranges
Apples; Strawberries
Oranges; Strawberries
Apples; Pears
Apples; Bananas
Pears; Bananas
Мое текущее решение чрезвычайно медленный и выполняет циклическое переключение по уникальным значениям A (с некоторой предварительной фильтрацией для обеспечения того, чтобы счетчик A был> 1 (в противном случае нет попарного края)), принимая логические индексы кадра данных:
for person in df1['A'].unique():
temp = df1[df1['A']==person]
...
perform some combination\itertools on df1['B']
Однако, поскольку мой df1 на самом деле очень большой, это занимает непомерное количество времени: есть ли здесь какой-то трюк с использованием лямбд и укладки, который я пропускаю?Очень ценю любую помощь!