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

Python实现JSON文件日期转季度格式的代码问题求助

解决JSON日期转季度年份格式问题

问题场景

需要将JSON文件中的MM/DD/YYYY格式日期转换为Q[季度][年份]格式(比如Q42022),原始JSON结构如下:

{
    "lastDate": {
        "0": "11/22/2022",
        "1": "10/28/2022",
        "2": "10/17/2022",
        "7": "07/03/2022",
        "8": "07/03/2022",
        "9": "06/03/2022",
        "18": "05/17/2022",
        "19": "05/08/2022",
        "22": "02/03/2022",
        "24": "02/04/2022"
    }
}

原代码报错无法识别lastDate,核心问题是对数据类型处理错误:

  • data['lastDate']取出的是字典对象,不是DataFrame,直接用df['lastDate']会报错
  • 未正确将日期数据转换为pandas时间序列,也没有生成目标格式的字符串

修正后的代码

import json
import pandas as pd

# 读取JSON文件
with open("date_to_quarters.json", "r") as f:
    data = json.load(f)

# 将lastDate字典转为pandas Series,方便日期处理
date_series = pd.Series(data['lastDate'])
# 转换为datetime类型,生成Q+季度+年份的格式字符串
quarter_series = pd.to_datetime(date_series, format="%m/%d/%Y").apply(
    lambda x: f"Q{x.quarter}{x.year}"
)

# 将处理后的Series转回字典,更新原数据
data['lastDate'] = quarter_series.to_dict()

# 写入回JSON文件
with open("date_to_quarters.json", "w") as f:
    json.dump(data, f, indent=4)

关键说明

  • 用pd.Series把字典转成序列,才能调用pandas的日期处理方法
  • pd.to_datetime指定format="%m/%d/%Y"确保日期解析准确
  • 通过lambda函数将每个日期对象转为目标格式
  • 最后把处理后的序列转回字典,替换原数据中的lastDate字段

最终输出

运行代码后,JSON文件会被更新为:

{
    "lastDate": {
        "0": "Q42022",
        "1": "Q42022",
        "2": "Q42022",
        "7": "Q32022",
        "8": "Q32022",
        "9": "Q22022",
        "18": "Q22022",
        "19": "Q22022",
        "22": "Q12022",
        "24": "Q12022"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:31:41