2016-07-27 1 views
3

以下は、私のデータフレームの簡略化したブロブです。私が処理したいパンダとデータ処理で一致するタプル

first.csv

,No.,Time,Source,Destination,Protocol,Length,Info,src_dst_pair 
325778,112.305107,02:e0,Broadcast,ARP,64,Who has 253.244.230.77? Tell 253.244.230.67,"('02:e0', 'Broadcast')" 
801130,261.868118,02:e0,Broadcast,ARP,64,Who has 253.244.230.156? Tell 253.244.230.67,"('02:e0', 'Broadcast')" 
700094,222.055094,02:e0,Broadcast,ARP,60,Who has 253.244.230.77? Tell 253.244.230.156,"('02:e0', 'Broadcast')" 
766542,766543,247.796156,100.118.138.150,41.177.26.176,TCP,66,32222 > http [SYN] Seq=0,"('100.118.138.150', '41.177.26.176')" 
767405,248.073313,100.118.138.150,41.177.26.176,TCP,64,32222 > http [ACK] Seq=1,"('100.118.138.150', '41.177.26.176')" 
767466,248.083268,100.118.138.150,41.177.26.176,HTTP,380,Continuation [Packet capture],"('100.118.138.150', '41.177.26.176')" 

私は(最後の要素)のすべてのユニークな要素src_dst_pairを持って

uniq_src_dst_pair = numpy.unique(data.src_dst_pair.ravel()) 
[('02:e0', 'Broadcast') ('100.118.138.150', '41.177.26.176')] 

私はそれぞれの

パンダで次の操作を行うことができますどのように要素をuniq_src_dst_pairに追加し、df.src_dst_pairを確認します。それが一致した場合、

私の予想結果は、私はこれを行うことができますどのように

('02:e0', 'Broadcast') : 188 
('100.118.138.150', '41.177.26.176') : 510 

ある別の列にdf.Lengthを追加し、それを保存しますか?

は以下

import pandas 
import numpy 


data = pandas.read_csv('first.csv') 
print data 

uniq_src_dst_pair = numpy.unique(data.src_dst_pair.ravel()) 
print uniq_src_dst_pair 
print len(uniq_src_dst_pair) 

# following is hardcoded, but need to be more general for the above list 
match1 = data[data.src_dst_pair == "('02:e0:ed:0a:fb:5f', 'Broadcast')"] # doesn't work 
+0

だけ明らかにするには、各接続(送信元と送信先で識別される接続)を介して送信された合計バイト数を取得しようとしていますか? –

+0

あなたは正しいです。 – user2532296

答えて

2

CSVファイルを台無しにされた私の試みです。ヘッダーに最初のコンマを入れてはならず、4番目の非ヘッダー行に余分なフィールドがあります。あなたが使用できる、という固定:

In [6]: data.groupby('src_dst_pair').Length.sum() 
Out[6]: 
src_dst_pair 
('02:e0', 'Broadcast')     188 
('100.118.138.150', '41.177.26.176') 510 
Name: Length, dtype: int64 

しかし、あなたの最後のフィールド、「src_dst_pairは」これはあなたが単に以下のような何かを行うことができますので、あなたが達成するために望んであれば余計れる:

In [8]: data.groupby(['Source','Destination']).Length.sum() 
Out[8]: 
Source   Destination 
02:e0   Broadcast  188 
100.118.138.150 41.177.26.176 510 
Name: Length, dtype: int64 
+0

ありがとう、src_data_pairにはいくつかの目的があります。私はコードシンプルさのためにここに示しませんでした。しかし、あなたの洞察力に感謝します。 – user2532296

関連する問題