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

如何在Python Pandas的DataFrame字符串列中提取指定日期值?

Pandas提取JSON格式列中的日期值解决方案

问题场景

你的DataFrame中col1列存储的是JSON格式的字符串,需要提取其中A_DT字段的日期部分(格式如2022-05-10),当A_DT为null时,新列col2也为null。之前使用字符串分割的方法因A_DT存在null值和格式差异报错。

解决方案

方法一:解析JSON为结构化数据(最稳妥)

直接将JSON字符串解析为字典,再展开成结构化DataFrame,能避免字符串分割带来的格式依赖问题,自动处理null值:

import pandas as pd
import json

# 假设你的原始DataFrame为df
# 将col1的JSON字符串解析为字典
df['col1_json'] = df['col1'].apply(json.loads)
# 展开JSON字典为结构化数据
df_json = pd.json_normalize(df['col1_json'])
# 提取A_DT并截取日期部分,null值自动保留为None
df['col2'] = df_json['A_DT'].str.split('T').str[0]
# 清理临时列
df = df.drop('col1_json', axis=1)

方法二:正则表达式提取(轻量高效)

如果不想解析整个JSON,可使用正则精准匹配A_DT的取值,直接处理日期和null情况:

import pandas as pd

# 正则匹配A_DT的取值,兼容null和带引号的日期格式
df['col2'] = df['col1'].str.extract(r'"A_DT":(null|".*?")', expand=False).apply(
    lambda x: x.strip('"').split('T')[0] if x != 'null' else None
)

方案说明

  • 原字符串分割方法的问题:当A_DT为null时,split('A_DT":"')得到的列表长度不足2,访问x[1]会触发索引错误;且依赖JSON键的固定顺序,扩展性差。
  • 上述两种方法均能处理A_DT为null的场景,且不受JSON键顺序影响,更稳定可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:27:30