我想在没有拆分器的情况下拆分等长字符串并扩展数据帧。
这是我使用的测试数据框:
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
关于python - 如何在没有拆分器的情况下拆分等长字符串并扩展数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446220/