使用 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 列并创建多行,您可以利用以下方法步骤:
按空格分割: 使用 str.split() 方法在“Seatblocks”列的每个单元格内按空格分割文本:
s = df['Seatblocks'].str.split(' ')
应用系列函数: 要将空格分隔字符串的结果列表转换为数据帧,请将 Series 函数应用于每个列表:
s = s.apply(Series, 1)
展平 DataFrame: 堆叠新的数据框以将其展平为一列dataframe:
s = s.stack()
重置索引并重命名列:重置索引以与原始数据框的索引对齐并将列重命名为'Seatblocks':
s.index = s.index.droplevel(-1) s.name = 'Seatblocks'
删除原始列: 从数据框中删除原始“Seatblocks”列:
del df['Seatblocks']
加入分裂DataFrame: 最后,将分割后的数据框与原始数据框连接起来:
df = df.join(s)
按冒号分割的替代方法
如果Seatblocks 列需要用冒号分隔,您可以将解决方案修改为如下所示:
s = df['Seatblocks'].str.split(' ') s = s.apply(lambda x: Series(x.split(':')))
这将创建一个数据框,其中每个冒号分隔的字符串位于其自己的列中。
以上是如何使用分隔符将 Pandas 列中的文本拆分为多行?的详细内容。更多信息请关注PHP中文网其他相关文章!