Сегментируйте фрейм данных каждый раз, когда значение повторяется в Python, используя pandas - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь сгенерировать строки или хотя бы другой фрейм данных из моего фрейма данных. То, что у меня есть:

Line    MM/DD/YYhh:mm:ss.ms.us  TEST    
9   04/17/2013:44:18.215.500    S   
20  04/17/2013:44:18.216.020    U   
27  04/17/2013:44:18.216.544    P   
34  04/17/2013:44:18.217.064    P   
39  04/17/2013:44:18.217.584    L   
48  04/17/2013:44:18.218.104    Y   
55  04/17/2013:44:18.218.627    P   
62  04/17/2013:44:18.219.147    R   
69  04/17/2013:44:18.219.667    <CR>    
76  04/17/2013:44:18.220.187    <LF>    
179 04/17/2013:44:18.721.249    U   
184 04/17/2013:44:18.721.769    L   
193 04/17/2013:44:18.722.289    <CR>    
200 04/17/2013:44:18.722.812    <LF>    
304 04/17/2013:44:19.236.017    E   
311 04/17/2013:44:19.236.537    R   
318 04/17/2013:44:19.237.060    R   
327 04/17/2013:44:19.237.580    <CR>    
334 04/17/2013:44:19.238.100    <LF>    
371 04/17/2013:44:19.649.033    M   
376 04/17/2013:44:19.649.553    O   
383 04/17/2013:44:19.650.073    D   
390 04/17/2013:44:19.650.596    E   
395 04/17/2013:44:19.651.116    ?   
402 04/17/2013:44:19.651.636    <CR>    
409 04/17/2013:44:19.652.156    <LF>    
489 04/17/2013:44:20.160.040    T   
496 04/17/2013:44:20.160.560    P   
505 04/17/2013:44:20.161.084    <CR>    
512 04/17/2013:44:20.161.604    <LF>    
607 04/17/2013:44:20.642.301    P   
614 04/17/2013:44:20.642.821    R   
623 04/17/2013:44:20.643.345    <CR>    
630 04/17/2013:44:20.643.865    <LF>    

Я пытаюсь отформатировать приведенный выше фрагмент в строки, чтобы он выглядел следующим образом

04/17/2013:44:18.220.187-SUPPLYPR<CR><LF>
04/17/2013:44:18.722.812-UL<CR><LF>
.
.
.

Что нужно сделать, так это данные MM / DD / YY, где значение TEST, и объединить все значения в TEST до каждого и создать строку для каждого вхождения. Необработанные данные, которые я использовал, чтобы получить этот Dataframe, были другими и были очень трудоемкими. Но сейчас я немного застрял на том, как получить этот формат. Любые идеи / предложения будут оценены. Спасибо:)

1 Ответ

1 голос
/ 23 апреля 2020

IIU C, вы ищете groupby:

(df.groupby(df.TEST.shift().eq('<LF>').cumsum())
   .agg({'MM/DD/YYhh:mm:ss.ms.us':'last',
         'TEST':''.join})
   .reset_index(drop=True) 
)

Выход:

     MM/DD/YYhh:mm:ss.ms.us              TEST
0  04/17/2013:44:18.220.187  SUPPLYPR<CR><LF>
1  04/17/2013:44:18.722.812        UL<CR><LF>
2  04/17/2013:44:19.238.100       ERR<CR><LF>
3  04/17/2013:44:19.652.156     MODE?<CR><LF>
4  04/17/2013:44:20.161.604        TP<CR><LF>
5  04/17/2013:44:20.643.865        PR<CR><LF>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...