首页 >后端开发 >Python教程 >如何使用分隔符将 Pandas 列中的文本拆分为多行?

如何使用分隔符将 Pandas 列中的文本拆分为多行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-16 10:39:03786浏览

How can you split text in a Pandas column into multiple rows using delimiters?

使用 Pandas 将列中的文本拆分为多行

处理包含需要拆分为多行的字符串的表格数据时,利用 pandas 和 Python 可以极大地帮助完成这项任务。考虑以下场景:CSV 文件包含一列文本,需要按特定分隔符进行分割。

问题陈述

假设您有一个 CSV 文件,其中有一列名为“ Seatblocks”包含代表多组座位的字符串,每组座位之间用空格分隔,后跟冒号。您的目标是将这些座椅组分成单独的行。例如,以下 Seatblocks 列:

2:218:10:4,6 1:13:36:1,12 1:13:37:1,13

应生成三个单独的行:

2:218:10:4,6
1:13:36:1,12
1:13:37:1,13

使用 Pandas 的解决方案

高效拆分 Seatblocks 列并创建多行,您可以利用以下方法步骤:

  1. 按空格分割: 使用 str.split() 方法在“Seatblocks”列的每个单元格内按空格分割文本:

    s = df['Seatblocks'].str.split(' ')
  2. 应用系列函数: 要将空格分隔字符串的结果列表转换为数据帧,请将 Series 函数应用于每个列表:

    s = s.apply(Series, 1)
  3. 展平 DataFrame: 堆叠新的数据框以将其展平为一列dataframe:

    s = s.stack()
  4. 重置索引并重命名列:重置索引以与原始数据框的索引对齐并将列重命名为'Seatblocks':

    s.index = s.index.droplevel(-1)
    s.name = 'Seatblocks'
  5. 删除原始列: 从数据框中删除原始“Seatblocks”列:

    del df['Seatblocks']
  6. 加入分裂DataFrame: 最后,将分割后的数据框与原始数据框连接起来:

    df = df.join(s)

按冒号分割的替代方法

如果Seatblocks 列需要用冒号分隔,您可以将解决方案修改为如下所示:

s = df['Seatblocks'].str.split(' ')
s = s.apply(lambda x: Series(x.split(':')))

这将创建一个数据框,其中每个冒号分隔的字符串位于其自己的列中。

以上是如何使用分隔符将 Pandas 列中的文本拆分为多行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn