2017-07-20 14 views
1

ネットワークトラフィックで.csvを読み込み、インデックスのような時間を入れます。私は「ipdst protoとtime」のグループに数えます。アウトpandas groupby freq 5s

... 
df['time'] = pd.to_datetime(df['time']) 
df.index = df['time'] 
data = df.copy() 

data_group = pd.DataFrame({'count': data.groupby(['ipdst', 'proto', data.index]).size()}).reset_index() 
data_group 

ipdst   proto time     count 
10.3.20.102  HTTP 2017-03-20 17:08:56  1 
10.3.20.102  HTTP 2017-03-20 17:08:57  1 
10.3.20.102  HTTP 2017-03-20 17:08:58  1 
10.3.20.102  HTTP 2017-03-20 17:08:58  1 
10.3.20.102  TCP  2017-03-20 17:08:59  3 

今私は5秒の時間周波数で繰り返されているもの "ipdst" と "プロトコル" を参照します。アウト次のように:

ipdst  proto time     count  
    -   - 2017-03-20 17:08:50 0 
10.3.20.102 HTTP 2017-03-20 17:08:55 4 
10.3.20.102 TCP 2017-03-20 17:08:55 4 
    -   - 2017-03-20 17:09:00 0 

答えて

0

のはgroupbyresamplesumreset_indexを使用してみましょう:

df.groupby(['ipdst','proto']).resample('5S', on='time').sum().reset_index() 

OR(あなたが0.19.0前に古いパンダを使用している場合)

df.set_index('time').groupby(['ipdst','proto']).resample('5S').sum().reset_index() 

出力:

  ipdst proto    time count 
0 10.3.20.102 HTTP 2017-03-20 17:08:55  4 
1 10.3.20.102 TCP 2017-03-20 17:08:55  3 

また、Wenが示唆するようにpd.Grouperを使用することもできます。 pd.TimeGrouper is deprecated.

df.groupby([df['ipdst'],df['proto'],pd.Grouper(key='‌​time', freq='5s')])['count'].sum().reset_index() 
+0

私はエラーを次のようしている:TypeError例外:__init __()を使用しているパンダのバージョンは何 – Wen

+0

「on」に予期しないキーワード引数を得ましたか。バージョン0.19.0の新しい 'on'パラメータ –

+0

私は長い間あなたのパンダを更新していません。ありがとうございます。 – Wen

関連する問題