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
相关产品推荐
相关产品推荐

