首页 > 解决方案 > 每次使用 pandas 在 Python 中重复值时分割数据帧

问题描述

我正在尝试从我拥有的数据帧生成字符串或至少一个不同的数据帧。我拥有的是:

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>
.
.
.

它应该做的是,它应该获取 TEST 值所在的 MM/DD/YY 数据,并将 TEST 中的所有值组合起来,并为每次出现的 . 在这个 Dataframe 之前,我用来获取的原始数据是不同的,而且工作量很大。但现在我有点坚持如何获得这种格式。任何想法/建议将不胜感激。谢谢 :)

标签: pythonpython-3.xpandasdataframe

解决方案


IIUC,您正在寻找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>

推荐阅读