Pandas 匹配列中特定字符串并提取对应日期到新列的实现咨询
实现方案
你可以通过Pandas的字符串提取方法结合正则匹配实现需求,示例代码如下:
import pandas as pd import re # 替换为你实际的评论列名 comment_col = "Comments" # 日期正则规则,可根据你实际的日期格式调整,当前适配MM/DD/YYYY、YYYY-MM-DD两种常见格式 date_reg = r"Now Accepted.*?(\d{1,2}/\d{1,2}/\d{4}|\d{4}-\d{1,2}-\d{1,2})" # 提取日期生成新列 df["Accepted Date"] = df[comment_col].str.extract(date_reg, flags=re.IGNORECASE)
规则说明
- 代码中的
flags=re.IGNORECASE用于适配大小写不敏感的匹配场景,如果你数据里的关键词都是严格的Now Accepted,可以移除该参数 - 如果你的日期格式为其他类型(比如日月年、带月份英文缩写的格式),只需要调整正则中的日期匹配部分即可
- 未匹配到关键词的行,新列会自动填充
NaN,符合预期输出效果
测试验证示例
你可以用以下测试样例验证逻辑是否符合预期:
# 构造测试数据 test_data = { "Comments": [ "Project status: Now Accepted 09/15/2024, next step review", "Submission rejected, missing required materials", "Now Accepted 2024-09-20, passed automatic check", "Waiting for audit result" ] } test_df = pd.DataFrame(test_data) # 执行提取逻辑 test_df["Accepted Date"] = test_df["Comments"].str.extract(date_reg, flags=re.IGNORECASE) print(test_df)
内容的提问来源于stack exchange,提问作者J_pigeon
相关产品推荐
相关产品推荐

