如何在Pandas中按符号拆分文本为行并转化为三列结构化表格
Pandas处理长文本结构化实现
初始数据准备
先构造包含目标长文本的DataFrame:
import pandas as pd # 初始单行数据 df = pd.DataFrame({'text': ['C9 ban Pearl; LEV ban Fracture; C9 pick Lotus; LEV pick Haven; C9 ban Split; LEV ban Ascent; Bind remains']})
步骤1:按分号拆分文本为多行
通过字符串拆分+行展开,将单行长文本拆分为独立行,并清理每行前后的空格:
# 按分号拆分文本为列表,再展开为单行 df = df.assign(text=df['text'].str.split(';')).explode('text') # 去除每行首尾多余空格 df['text'] = df['text'].str.strip()
步骤2:拆分每行到Team、pb_phase、Map三列
针对两种文本格式(队伍+动作+地图、地图+remains)分别处理:
# 处理包含ban/pick的常规行,按空格拆分前两个字段,剩余部分作为地图名 regular_mask = df['text'].str.contains('ban|pick') df.loc[regular_mask, ['Team', 'pb_phase', 'Map']] = df.loc[regular_mask, 'text'].str.split(n=2, expand=True) # 处理最后一行的remains格式,拆分地图名和动作,队伍字段设为缺失值 remain_mask = df['text'].str.contains('remains') df.loc[remain_mask, ['Map', 'pb_phase']] = df.loc[remain_mask, 'text'].str.split(n=1, expand=True) df.loc[remain_mask, 'Team'] = pd.NA
步骤3:整理最终结构化表格
删除原文本列,重置索引得到最终结果:
final_df = df.drop('text', axis=1).reset_index(drop=True)
执行后输出的结构化表格如下:
Team pb_phase Map 0 C9 ban Pearl 1 LEV ban Fracture 2 C9 pick Lotus 3 LEV pick Haven 4 C9 ban Split 5 LEV ban Ascent 6 <NA> remains Bind
内容的提问来源于stack exchange,提问作者Octa
相关产品推荐
相关产品推荐

