如何使用正则匹配pandas DataFrame列表列内容并新增匹配结果列
实现方案
- 前置依赖:先安装pandas库,执行命令
pip install pandas - 完整代码实现
import pandas as pd import re import ast # 读取原始CSV df = pd.read_csv("你的输入文件路径.csv") # 将text列的字符串形式列表转换为真实列表 df["text"] = df["text"].apply(ast.literal_eval) def extract_matched_content(sentence_list): text1_val = None text2_val = None for sent in sentence_list: # 匹配text1规则:包含Hello或world,仅保留第一个匹配结果 if text1_val is None and re.search(r"Hello|world", sent): text1_val = sent # 匹配text2规则:包含Welcome或universe,仅保留第一个匹配结果 if text2_val is None and re.search(r"Welcome|universe", sent): text2_val = sent return pd.Series([text1_val, text2_val]) # 生成新列 df[["text1", "text2"]] = df["text"].apply(extract_matched_content) # 导出结果CSV,可根据需求调整输出路径 df["text"] = df["text"].apply(str) df.to_csv("输出结果.csv", index=False, encoding="utf-8-sig")
- 可调整说明
- 如果需要忽略大小写匹配,可在
re.search方法中添加flags=re.IGNORECASE参数即可 - 如果同一行有多个符合规则的句子需要全部保留,可将text1_val、text2_val改为列表存储匹配结果,最终用逗号等分隔符拼接即可
- 如果需要忽略大小写匹配,可在
内容的提问来源于stack exchange,提问作者Pavi
相关产品推荐
相关产品推荐

