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

如何在Python Pandas中验证DataFrame字符串的出生日期日范围

在Pandas中校验字符串日期的日部分合法性

问题说明

现有一个Pandas DataFrame,其中col1为字符串类型,数据示例如下:

col1
14212614414
05261265140
82044114467
...

需求是提取col1字符串的第5、6位(对应Python字符串索引[4:6]),判断该数值是否属于1-31的合法日期范围,最终生成包含布尔值结果的col2列,预期输出如下:

col1col2
14212614414True
05261265140True
82044114467False
......

实现方案

方法1:简洁的子串提取+范围判断

直接利用Pandas的字符串方法提取目标子串,转换为整数后用between()方法完成范围校验:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    "col1": ["14212614414", "05261265140", "82044114467"]
})

# 提取第5-6位字符,转整数后判断是否在1-31之间
df["col2"] = df["col1"].str[4:6].astype(int).between(1, 31)

方法2:带格式校验的处理(可选)

如果需要先验证提取的子串是纯数字(避免非数字字符导致转换错误),可以用apply()结合自定义逻辑:

def validate_day(s):
    day_str = s[4:6]
    if day_str.isdigit():
        day = int(day_str)
        return 1 <= day <= 31
    return False

df["col2"] = df["col1"].apply(validate_day)

结果说明

两种方法都会为DataFrame新增col2列:

  • 当提取的日数值在1-31区间内时,col2值为True
  • 若数值超出范围或提取的子串不是有效数字,col2值为False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:27:27