使用pandas的to_json()将DataFrame转为字典列表遇格式问题求助
解决pandas to_json的日期格式与结构问题
我来帮你搞定这个问题!你需要调整to_json()的两个关键参数,就能同时解决日期转字符串、输出行优先列表的需求:
1. 调整输出结构:orient='records'
默认的orient='columns'会生成列优先的JSON结构(键是列名,值是对应列的所有数据),而orient='records'会直接把每一行数据转成一个字典,最终输出一个字典列表,完全符合你要的格式。
2. 控制日期格式:date_format='iso' 或 date_format='string'
pandas的to_json()默认会把datetime类型转成Unix时间戳,设置date_format='iso'会将日期转换为ISO 8601格式的字符串(比如"2023-10-05T14:30:00");如果你的pandas版本在1.3.0及以上,也可以用date_format='string',效果一致。
如果你需要自定义日期格式(比如只保留年月日"2023-10-05"),可以先把datetime列转成字符串再转JSON:
df['日期列名'] = df['日期列名'].dt.strftime('%Y-%m-%d')
完整示例代码
import pandas as pd # 读取Excel,确保浮点数格式的datetime被正确解析为日期类型 # 如果自动识别失败,手动指定parse_dates参数 df = pd.read_excel('test.xlsx', parse_dates=['日期列名']) # 转换为目标格式的JSON json_result = df.to_json(orient='records', date_format='iso') # 打印查看结果 print(json_result)
补充说明
- 要是读取Excel时浮点数datetime没被自动解析,一定要在
read_excel里加上parse_dates参数指定日期列,确保列的类型是datetime64,这样后续转JSON时才能被正确处理。 - 这两个参数可以组合使用,一次性解决结构和日期格式的问题,不用额外的复杂处理。
内容的提问来源于stack exchange,提问作者Gabriel Fernandes
相关产品推荐
相关产品推荐

