我有一個很大的df,我需要改變。對於一個計算,我想在pborderid上對數據進行分組,然後只保留在to_wpadr中具有重複值的行。由於組數太多,熊貓過濾器執行緩慢
這是我的df的一個例子。
pborderid pbcarid wsid to_wpadr colli pk_end_time
10 76079450 61838497 hp1 523-369p 1 2016-07-01 00:00:38
11 76079450 61838504 hp1 523-370p 1 2016-07-01 00:00:47
12 76079450 61838110 hp1 523-372p 1 2016-07-01 00:01:05
13 76079450 61838225 hp1 523-372p 2 2016-07-01 00:01:13
14 76079450 61838504 hp1 523-372p 3 2016-07-01 00:01:30
15 76079450 61838497 hp1 523-373p 1 2016-07-01 00:01:45
16 76079450 61838504 hp1 523-377p 1 2016-07-01 00:01:55
17 76079450 61838110 hp1 523-376p 5 2016-07-01 00:02:26
18 76079450 61838225 hp1 523-376p 1 2016-07-01 00:02:33
19 76079450 61838497 hp1 523-376p 6 2016-07-01 00:02:55
使用以下代碼工作,但是當組數增加時,性能顯着下降,最多需要20秒。我認爲這應該是可行的,只使用pborderid作爲組,然後過濾/應用。
ap=ot.groupby(["pborderid","to_wpadr"],sort=False).filter(lambda x: len(x) >1)
任何人有任何建議如何我只能使用一個groupcolumn或如何我可以改善其他性能?
這裏是想要的結果:
pborderid pbcarid wsid to_wpadr colli pk_end_time
12 76079450 61838110 hp1 523-372p 1 2016-07-01 00:01:05
13 76079450 61838225 hp1 523-372p 2 2016-07-01 00:01:13
14 76079450 61838504 hp1 523-372p 3 2016-07-01 00:01:30
17 76079450 61838110 hp1 523-376p 5 2016-07-01 00:02:26
18 76079450 61838225 hp1 523-376p 1 2016-07-01 00:02:33
19 76079450 61838497 hp1 523-376p 6 2016-07-01 00:02:55
我給你的答案添加了時間 - 它幾乎快了2.5倍;) – MaxU
@MaxU:很好地完成了。謝謝! –