Сравните два столбца в фрейме данных pandas с обратным

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных pandas с содержимым графика, который мне нужно проверить на «двунаправленность» с помощью Python…

   src dest  val1  val2
0   A    B     8     9
1   B    A     8     9
2   B    C     7     8
3   D    C     5     6
4   B    A     5     6
  

В этом случае ссылка между источником ‘A’ и получателем ‘B’ имеет соответствующую ссылку в фрейме данных от ‘B’ до ‘A’. Таким образом, я могу рассматривать это как пару двунаправленных ссылок. Строка 0 и строка 4 также являются двунаправленными ссылками…

Ссылка между ‘B’ и ‘C’ не имеет соответствующей обратной ссылки от ‘C’ до ‘B’.

Любые предложения сообщества StackOverflow о способах определения того, какие ссылки имеют соответствующую двунаправленную ссылку? или, другими словами, какие строки имеют совпадающую строку, в которой значения в двух столбцах транспонируются / меняются местами?

Результирующий фрейм данных, который выглядит следующим образом, может работать:

   src dest  val1  val2  bidir
0   A    B     8     9   True
1   B    A     8     9   True
2   B    C     7     8  False
3   D    C     5     6  False
4   B    A     5     6   True
  

Любая помощь, которую вы можете предложить, приветствуется.

Обновление: собираюсь добавить к этому, основываясь на действительно хорошем ответе, предоставленном acushner, чтобы принять его решение основной проблемы, а затем заполнить фрейм данных, как показано в результирующем фрейме данных выше.

 >>> df['bidir'] = (df.src   df.dest).isin(df.dest   df.src)

>>> print a
  src dest  val1  val2  bidir
0   A    B     8     9   True
1   B    A     8     9   True
2   B    C     7     8  False
3   D    C     5     6  False
  

Ответ №1:

вы можете просто сделать:

 (df.src   df.dest).isin(df.dest   df.src)
  

Комментарии:

1. Да, вы правы, подумал, что мой ответ выглядит слишком хорошо, удалит, умный ответ