2016-10-03 31 views
2

我有源和目的IP地址,以及字節的數據幀,如何避免DataFrame中的兩列之間的循環使用Google圖表呈現Sankey圖表?

[ 1.2.3.4, 8.8.8.8, 123456 ] 
... 
[ 8.8.8.8, 1.2.3.4, 1234 ] 

我的問題是,我使用的這個數據幀的JS visualization打破,如果有這樣一個週期。就像1.2.3.4和8.8.8.8一樣。

注:在您的數據,避免循環:如果鏈接本身,或者鏈接到B 其鏈接到C可鏈接到A,圖表不會呈現

有沒有一種辦法確保我在關係中保持單向性?所以萬一8.8.8.8鏈接回1.2.3.4 - 並創建一個循環 - 我會跳過它或交換值。我不確定交換是熊貓的選擇。

我給自己一個快速的解決方法,把它限制在前十名的談話者,一個週期不太可能。但它當然不完整。

vis_data += str(netflow_df.groupby(("dip","sip","bytes"), as_index=False).sum() 
       .sort_values(by="bytes", ascending=False) 
       .head(10)[["sip", "dip", "bytes"]] 
       .values.tolist() 
       ) 

回答

1

沒有任何額外的信息,這樣就足夠了嗎? :

for index in range(df1): 
    if df1[a] == df2[b]: 

     if df1[b] == df2[a]: 
      df1.drop(df1.index[index]) 
    pass 
+0

不,這將檢查在給定索引列a是否等於列b。我的問題是,一旦我註冊關係a - > b我不能註冊b - > a。 – wishi

+1

這就是我認爲所以檢查如果a在列b中有一個相等(所以a-> b),那麼如果第二個df有b == a,那麼它們都是相同的關係(b-> a),因此你放棄重複但逆向發生。並只保留一個 - > b。我很抱歉,如果我錯了 – SerialDev

+0

我認爲你是對的我只是有一個思想問題。 ;) – wishi