在給定範圍的行我有一個數據框看起來與此類似:選擇從分組的對象
+------------+---------------------+---------+
| action | ts | uid |
+------------+---------------------+---------+
| action1 | 2013-01-01 00:00:00 | 543534 |
| action2 | 2013-01-01 00:00:00 | 543544 |
| action1 | 2013-01-01 00:00:02 | 543542 |
| action2 | 2013-01-01 00:00:03 | 543541 |
| .... | .... | ... |
+------------+---------------------+---------+
我要計算每個用戶在特定TIMERANGE執行的每一個類型的actions
數,所以預期輸出是不服這樣的:
uid action1 action2
543534 10 1
543534 0 2
...
我想通過首先將.groupby('uid')
然後通過分組的對象迭代來解決這個問題,在選擇的行然後ts
在給定的範圍內,則串聯dataframes進入導致數據幀,分類
所以,水木清華這樣的:
df = ...
start_date = ...
end_date = ...
result = {}
grouped = df.groupby('uid')
grouped_dict = dict(list(grouped))
for item in grouped.keys:
df = grouped[item]
result[item] = df[df.ts > start_date and df.ts < end_date].size()
我還沒有運行此代碼,但我認爲,即使它的工作原理是非常低效的。即使將分組對象轉換爲字典也需要很長時間。在這種情況下更有效的方法是什麼?
你有沒有注意到你可以通過多個鍵實際分組? –
如果你可以枚舉時間範圍,那麼你可以將這兩個分組。 –