如何将pandas列中字符串格式的spaCy NER元组列表转为实际元组列表
实现方法
最推荐方案:使用ast.literal_eval解析
这是最安全的方案,仅支持解析Python字面量结构(列表、元组、字符串等),不会存在eval的恶意代码执行风险,完美适配你的场景。
单个字符串转换示例
import ast # 假设这是你从DataFrame中取出的字符串类型NER结果 ner_str = """[('Madaripur', 'GPE'), ('Sadar', 'GPE'), ('Madaripur', 'GPE'), ('Wednesday', 'DATE'), ('Rozina Parveen', 'PERSON'), ('55', 'DATE'), ('Jalal Ahmed', 'PERSON'), ('Barguna', 'GPE'), ('Mahfuzur Rahman', 'PERSON'), ('Rozina', 'PERSON'), ('Mostafapur Bridge', 'FAC'), ('Dhaka', 'GPE'), ('around 12:30 pm', 'TIME'), ('Rozina', 'PERSON'), ('Mahfuzur', 'PERSON'), ('Madaripur Sadar Hospital', 'FAC'), ('Madaripur Sadar Police Station', 'ORG'), ('Rezaul Karim', 'PERSON')]""" # 转换为元组列表 ner_list = ast.literal_eval(ner_str) # 验证转换结果 print(type(ner_list)) # 输出 <class 'list'> print(type(ner_list[0])) # 输出 <class 'tuple'> # 直接遍历使用 for ent_text, ent_type in ner_list: print(f"实体内容:{ent_text},实体类型:{ent_type}")
Pandas整列批量转换示例
如果需要转换整个DataFrame列的所有值,直接用apply批量处理即可:
import ast import pandas as pd # 假设你的DataFrame叫df,存储字符串格式NER结果的列叫ner_str df['ner_list'] = df['ner_str'].apply(ast.literal_eval)
转换后新的ner_list列每个值都是你需要的元组列表结构,可以直接做后续遍历处理。
内容的提问来源于stack exchange,提问作者Nakkhatra
相关产品推荐
相关产品推荐

