我有一個數據框,我嘗試以某種方式進行排序。使用Python中的Pandas Dataframes對數據進行排序
輸入:
CompanyName count assignee_name CallType recvd_dttm
Company3 4 Jill Machine1 8/28/2015 13:46
Company3 4 Jill Machine1 8/27/2015 13:26
Company3 4 Jack Machine2 8/27/2015 11:46
Company3 4 Jill Machine1 8/25/2015 9:56
Company2 3 Brad Machine1 8/29/2015 12:43
Company2 3 Lee Machine2 8/28/2015 13:44
Company2 3 Lee Machine1 8/22/2015 19:45
Company1 2 Lee Machine1 8/12/2015 14:47
Company1 2 Lee Machine2 8/11/2015 13:44
Company0 1 Tracy Machine2 8/31/2015 13:32
我想要什麼:
Company3 Company2 Company1 Company0
4 3 2 1
Jill Lee Lee Tracy
Machine1 Machine1 Machine1 Machine2
8/28/2015 8/29/2015 8/12/2015 8/31/2015
它應該輸出的公司名稱中的順序誰在數據框中顯示了大部分。然後它應該顯示拿起MOST電話的人。那麼CallType和recvd_dttm的信息應該是最新的信息。
我用這個:
mode = (lambda ts: ts.value_counts(sort=True).index[0]
if len(ts.value_counts(sort=True)) else None)
cols = df['CompanyName'].value_counts().index
df = df.groupby('CompanyName')[['count','assignee_name', 'CallType', 'receiveddate']].agg(mode).T.reindex(columns=cols)
它按公司名稱正確輸出和計數,但選擇一個隨機呼籲其他信息,而不是最近的電話。
我也在考慮使用類似df.groupby(['CompanyName','count']).agg(lambda x:x.value_counts().index[0])
但我得到UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 21285: ordinal not in range(128)
錯誤。
是的!這讓我更靠近一步。接下來的事情是讓assignee_name成爲該公司名稱顯示最多的名稱。你會知道如何得到它嗎? – jenryb
就像在這種情況下一樣,對於公司2而言,李會出現,而不是布拉德,因爲他出現在公司2的電話中更多。 – jenryb
@jenryb我已編輯帖子以解決該問題。 :-) –