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

时间:2014-06-26 17:57:08

标签: 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

在这种情况下,源'A'和目标'B'之间的链接在DataFrame中具有从'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

您可以提供任何帮助。

更新 根据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

1 个答案:

答案 0 :(得分:4)

你可以这样做:

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