我使用熊貓分析現有SSH會話到不同的節點,爲我所分析的ssh守護進程日誌和我有一個包含以下列的數據幀:大熊貓得到一個元素的索引中的地圖功能
- 節點:在連接建立
- 屆節點的名稱:會議的ID
- 開始:什麼時候在連接開始
- 完成時間戳:時間戳indicanting當連接結束
這裏的數據的一部分:
In [375]: sessions[1:10]
Out[375]:
Node Session Start Finish
1 svg01 27321 2015-02-23 07:24:45 2015-02-23 07:50:57
2 svg02 14171 2015-02-23 10:25:08 2015-02-23 14:33:24
3 svg02 14273 2015-02-23 10:26:21 2015-02-23 14:36:19
4 svg01 14401 2015-02-23 10:28:16 2015-02-23 14:38:04
5 svg01 26408 2015-02-23 14:01:49 2015-02-23 18:38:25
6 svg03 13722 2015-02-23 18:24:39 2015-02-23 20:51:59
7 svg05 17637 2015-02-23 19:10:00 2015-02-23 19:10:20
我想生成具有在建立一個新的連接在一個給定的節點建立的會話數量的附加列。
不考慮節點,我可以用計算這個:
count_sessions = lambda t: sessions[(sessions.Start<t) & (sessions.Finish>t)].shape[0]
sessions['OpenSessions'] = sessions['Start'].map(count_sessions)
的問題是,我還需要考慮到「節點」列的值,但我不知道如何得到它。
我可以使用Series中元素的索引來獲取會話DataFrame中的節點,但是我沒有找到任何方法來檢索傳遞給地圖的元素的索引。
你能提供一個CSV嗎?如果可以直接將數據解析到DataFrame中,則更容易擺弄數據... – filmor 2015-03-03 10:23:33
以下是數據集:https://www.dropbox.com/s/a8q73338nz2okvy/sessions.csv – alcachi 2015-03-03 11:31:45
此方法是O(n ** 2),如果'sessions'有很多行,則方法很慢。如果您使用sort&cumsum,則可以加速O(n * log(n))。 – HYRY 2015-03-03 13:13:03