2014-06-26 41 views
1

我有圖形內容的熊貓數據幀,我需要檢查使用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'的DataFrame中具有匹配的鏈接。因此,我可以認爲這是一對雙向鏈接。行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 

回答

4

,你可以這樣做:

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

是的,你說得對,認爲我的回答看起來不太好,會刪除,巧妙回答 – EdChum