将 pandas DataFrame 中的两列与逆进行比较

E. *_*eme 3 python pandas

我有一个带有图形内容的 Pandas DataFrame,我需要使用 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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,源“A”和目标“B”之间的链接在数据帧中从“B”到“A”有一个匹配的链接。因此,我可以认为这是一对双向链接。第 0 行和第 4 行也是双向链接...

“B”和“C”之间的链接没有从“C”到“B”的相应反向链接。

StackOverflow 社区关于如何识别哪些链接具有匹配的双向链接的任何建议?或者换句话说,哪些行有一个匹配行,其中两列中的值被转置/交换?

看起来像这样的结果 DataFrame 可能会起作用:

  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
Run Code Online (Sandbox Code Playgroud)

感谢您提供的任何帮助。

更新: 基于 acushner 提供的非常好的答案,将添加到此内容中,将他的解决方案用于主要问题,然后填充 DataFrame,如上面生成的 DataFrame 所示。

>>> 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
Run Code Online (Sandbox Code Playgroud)

acu*_*ner 5

你可以这样做:

(df.src + df.dest).isin(df.dest + df.src)
Run Code Online (Sandbox Code Playgroud)