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

标签 python pandas dataframe

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

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

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/

相关文章:

python - 尝试将稀疏 df 保存到 hdf5 时获取 'SparseDtype' 对象没有属性 'itemsize'?

python - 从保存的模型进行预测时,测试数据预测会产生随机结果

python - 如何定义一个二维数组?

python - 即使正确安装 pip 和 mysql 连接器后,我也无法在 Pycharm 上连接到 MySQL

r - 更新数据框列中值的子集

python - 使用逗号和负数将 Pandas Dataframe 转换为 Float

python - 从 pandas apply 构造一个 DataFrame

python - 在 colab 上使用 TPU 上的估计器进行 BERT 微调 ​​TypeError : unsupported operand type(s) for *=: 'NoneType' and 'int'

python - 将深度嵌套的 JSON 展平为多行

python - 使用 python 和 pandas 合并 csv 文件(重叠行)