You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas筛选仅含单个mm/dd/yyyy格式日期的行?

解决仅提取含单个日期行的问题

你的问题出在原正则只是匹配包含至少一个mm/dd/yyyy格式日期的行,所以两行都会被选中。要筛选仅含一个日期的行,可以用以下两种方法:

方法一:统计日期出现次数(直观易读)

先统计每行中日期的出现次数,再筛选次数为1的行:

import pandas as pd

# 假设你的原始DataFrame是df
date_pattern = r'\d{2}/\d{2}/\d{4}'

# 新增列统计每行日期数量
df['date_count'] = df['string'].str.count(date_pattern)

# 筛选仅含一个日期的行,生成目标DataFrame
df_result = df[df['date_count'] == 1].copy()
# 提取结果列(也可以直接保留原string列)
df_result['result'] = df_result['string']
# 清理临时列
df_result = df_result.drop('date_count', axis=1)

方法二:用精确正则匹配(无需临时列)

通过正则匹配整个行仅包含一个日期的情况:

import pandas as pd

date_pattern = r'\d{2}/\d{2}/\d{4}'
# 构建匹配仅单个日期的正则
single_date_regex = r'^(?:(?!' + date_pattern + r').)*' + date_pattern + r'(?:(?!' + date_pattern + r').)*$'

# 筛选符合条件的行
df_result = df[df['string'].str.contains(single_date_regex)].copy()
df_result['result'] = df_result['string']

正则解释

^(?:(?!' + date_pattern + r').)*:从行首开始,匹配所有不构成日期模式的字符
date_pattern:匹配唯一的一个日期
(?:(?!' + date_pattern + r').)*$:匹配日期之后所有不构成日期模式的字符,直到行尾

这样就能精准筛选出仅含一个mm/dd/yyyy格式日期的行。

内容的提问来源于stack exchange,提问作者Nev1111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:36:33