#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. Да, вы правы, подумал, что мой ответ выглядит слишком хорошо, удалит, умный ответ