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

如何按日期格式筛选Pandas数据框列?混合格式列分离咨询

按不同日期格式拆分Pandas数据框

没问题,我来帮你搞定这个需求!你想要按不同日期格式拆分数据框,核心是用正则表达式来匹配不同格式的日期字符串——直接用is是行不通的,因为is是用来判断对象身份的,不是匹配字符串格式的。

具体实现步骤

首先,我们需要针对两种日期格式写出对应的正则表达式,然后用Pandas的str.match()方法来筛选行:

  1. 匹配%d%b%y格式(比如05Jan23、12Dec22)
    对应的正则是 r'^\d{2}[A-Za-z]{3}\d{2}$',拆解一下:

    • ^ 和 $ 确保匹配整个字符串,不会误匹配包含该格式的长字符串
    • \d{2} 匹配两位数字(日期部分)
    • [A-Za-z]{3} 匹配三个字母的月份缩写(兼容大小写)
    • \d{2} 匹配两位数字(年份部分)
  2. 匹配%b%y格式(比如Jan23、Oct21)
    对应的正则是 r'^[A-Za-z]{3}\d{2}$',也就是三个字母的月份缩写加两位数字。

完整代码示例

import pandas as pd
import re  # 用于忽略大小写匹配

# 示例数据框(替换成你自己的真实数据即可)
data = {'Cl_date': ['05Jan23', 'Jan23', '18Feb22', 'Feb22', '31Mar21', 'Mar21', 'InvalidDate']}
df = pd.DataFrame(data)

# 筛选%d%b%y格式的行,忽略大小写
df1 = df[df['Cl_date'].str.match(r'^\d{2}[A-Za-z]{3}\d{2}$', flags=re.IGNORECASE)]

# 筛选%b%y格式的行,忽略大小写
df2 = df[df['Cl_date'].str.match(r'^[A-Za-z]{3}\d{2}$', flags=re.IGNORECASE)]

运行后,df1会包含所有日+月缩写+年格式的行,df2则包含月缩写+年格式的行,不符合格式的行(比如示例里的InvalidDate)会被自动排除。

内容的提问来源于stack exchange,提问作者A.DS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:20:06