Skip to main content
 首页 » 编程设计

python之如何在没有拆分器的情况下拆分等长字符串并扩展数据帧

2025年05月04日30java哥

我想在没有拆分器的情况下拆分等长字符串并扩展数据帧。

这是我使用的测试数据框:

sample1 = pd.DataFrame({ 
        'TST': {1: 1535840000000, 2: 1535840000000},  
        'RCV': {1: 1535840000000, 2: 1535850000000},  
        'TCU': {1: 358272000000000, 2: 358272000000000},  
        'SPD': {1: '0', 2: '00000000000000710000007D007C00E2'} 
        }) 

如您所见,SPD 列包含各种长度的字符串,没有任何分隔符。

我想将 SPD 列每 4 个字符拆分为新行,然后将它们扩展到数据框。

             TST            RCV              TCU   SPD 
0  1535840000000  1535840000000  358272000000000  0000 
1  1535840000000  1535840000000  358272000000000  0000 
2  1535840000000  1535840000000  358272000000000  0000 
3  1535840000000  1535840000000  358272000000000  0071 
4  1535840000000  1535840000000  358272000000000  0000 
5  1535840000000  1535840000000  358272000000000  007D 
6  1535840000000  1535840000000  358272000000000  007C 
7  1535840000000  1535840000000  358272000000000  00E2 
 

我尝试首先使用这个生成一个系列:

pd.concat([pd.Series(re.findall('....', row['SPD'])) for _, row in sample1.iterrows()]).reset_index() 

给出

   index     0 
0      0  0000 
1      1  0000 
2      2  0000 
3      3  0071 
4      4  0000 
5      5  007D 
6      6  007C 
7      7  00E2 

但我无法将其扩展回 sample1

请您参考如下方法:

您可以使用str.findall,然后根据来自SPD 的4 个字符切片的数量重复 行。

from itertools import chain 
 
spd4 = df.pop('SPD').str.findall(r'.{4}')  
 
(pd.DataFrame(df.values.repeat(spd4.str.len(), axis=0), columns=df.columns) 
   .assign(SPD=list(chain.from_iterable(spd4)))) 
 
             TST            RCV              TCU   SPD 
0  1535840000000  1535850000000  358272000000000  0000 
1  1535840000000  1535850000000  358272000000000  0000 
2  1535840000000  1535850000000  358272000000000  0000 
3  1535840000000  1535850000000  358272000000000  0071 
4  1535840000000  1535850000000  358272000000000  0000 
5  1535840000000  1535850000000  358272000000000  007D 
6  1535840000000  1535850000000  358272000000000  007C 
7  1535840000000  1535850000000  358272000000000  00E2