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

将嵌套字典转换为Pandas DataFrame的高效实现方案问询

嘿,我来给你个更高效的解决方案,完全不用手动搞那些循环遍历、收集日期的冗余操作——Pandas本身就有现成的方法能完美搞定你的需求!

最优实现代码

import pandas as pd
import numpy as np

# 你的原始嵌套字典
myDict = {'a':{'2017-01-01':4.1, '2017-01-02':10.8}, 'b':{'2017-01-01':6.2, '2017-01-03':8.5}}

# 核心操作:把每个内层字典转为Series,然后按列合并
mydf = pd.concat([pd.Series(data, name=col) for col, data in myDict.items()], axis=1)

# 转换索引为DatetimeIndex并设置名称
mydf.index = pd.DatetimeIndex(mydf.index)
mydf.index.name = 'Date'

# 如果需要按日期排序索引(可选,方便后续时间操作)
mydf = mydf.sort_index()

print(mydf)

执行后输出的结果完全符合你的要求:

a     b
Date                 
2017-01-01  4.1   6.2
2017-01-02 10.8   NaN
2017-01-03   NaN  8.5

为什么这个方法比你的伪代码更优?

  • 自动处理日期并集:pd.concat在合并多个Series时,会自动提取所有Series索引的并集作为结果的索引,完全不用你手动遍历收集日期。
  • 自动填充NaN:没有对应数据的日期会自动填充np.nan,省掉了手动判断填充的步骤。
  • 效率拉满:Pandas的内置函数都是基于优化后的C扩展实现的,比你用Python循环遍历字典、复制数据的方式快得多,数据量越大,优势越明显。
  • 代码简洁易维护:几行代码就搞定所有需求,逻辑清晰,后续修改也方便。

如果你需要调整索引的顺序(比如示例里的非排序索引),只需要手动指定索引重新对齐即可,但一般来说按日期排序更适合后续的时间序列操作哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:04:32