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

Pandas如何将嵌套字典的time列转换为日-月-年格式日期

实现方案

你可以根据自己的使用场景选以下任意一种方式实现,都能得到你要的日-月-年格式time列:

方法1:apply逐行拼接(代码最短、逻辑最直观)

不需要额外处理,直接对存储字典的time列做映射,逐行取出年、月、日字段拼接即可,仅需1行代码:

candleData['time'] = candleData['time'].apply(lambda item: f"{item['day']}-{item['month']}-{item['year']}")

执行完直接覆盖原time列,输出结果和你预期完全一致。

方法2:先展开嵌套列再拼接(适合后续需要单独操作日月年字段的场景)

如果你之后需要按日、月单独筛选或计算数据,可以先把嵌套字典拆成独立列,再拼接成目标格式:

# 将time列的字典拆分为day、month、year三个独立列
candleData[['day', 'month', 'year']] = candleData['time'].apply(pd.Series)
# 拼接为目标格式的字符串
candleData['time'] = candleData['day'].astype(str) + '-' + candleData['month'].astype(str) + '-' + candleData['year'].astype(str)
# 不需要保留单独日月年列的话直接删除即可
candleData.drop(columns=['day', 'month', 'year'], inplace=True)

方法3:读取JSON阶段直接展平(适合大数据量场景,运行效率最高)

你可以在最开始解析JSON的时候就把嵌套结构扁平化,避免先生成字典列再二次处理,替换你原本创建DataFrame的代码即可:

import pandas as pd
from pandas import json_normalize

# 解析原始JSON数据
raw_data = json.loads(request.GET.get('candleData'))
# 自动展平嵌套结构,time字段会被拆为time.day、time.month、time.year三列
candleData = json_normalize(raw_data)
# 拼接成目标日期格式
candleData['time'] = candleData['time.day'].astype(str) + '-' + candleData['time.month'].astype(str) + '-' + candleData['time.year'].astype(str)
# 保留需要的字段,删除展开产生的多余列
candleData = candleData[['open', 'high', 'low', 'close', 'time']]

*补充提示:如果后续需要做时间序列相关计算(比如按周/月聚合、计算时间差),不建议把time列存为字符串,可直接转换为pandas内置的datetime类型,转换代码为:

candleData['time'] = pd.to_datetime(candleData['time'].apply(lambda x: {k:v for k,v in x.items()}) )

转换后可以直接使用pandas所有时间序列相关的API,计算效率更高。*

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:39:20