Dna*_*iel 3 python dictionary dataframe pandas
我有一个看起来像这样的两级字典:
myDict = {'a':{'2017-01-01':4.1, '2017-01-02':10.8}, 'b':{'2017-01-01':6.2, '2017-01-03':8.5}}
Run Code Online (Sandbox Code Playgroud)
我想将其存储为具有以下设计的数据框:
数据框:
mydf = pd.DataFrame({'a':[4,10,np.nan],'b':[6.2,np.nan,8.5]}, index=pd.DatetimeIndex(['2017-01-04','2017-01-02','2017-01-03']))
mydf.index.name = 'Date'
Run Code Online (Sandbox Code Playgroud)
IE,
mydf
Out[33]:
a b
Date
2017-01-04 4.0 6.2
2017-01-02 10.0 NaN
2017-01-03 NaN 8.5
Run Code Online (Sandbox Code Playgroud)
我面临的问题当然是我事先不知道哪些日期构成了最终索引(所有日期的联合),而且我也不知道逐列添加数据的最佳方法是什么。
我想到的伪代码:
(1) 遍历字典级别 1 中所有键的所有日期,然后取所有日期的并集。这成为我的索引。
(2) 然后创建一个新的字典,其中只有原始键和值与 (1) 中的索引顺序相同,以及找不到值的 np.nan
(3)使用(2)中的字典创建pandas数据框
但是,我发现这种方法存在一些效率低下的问题,因为字典中的循环过多,并且复制数据的频率高于可能需要的频率。
欢迎任何建议。
丢弃你的伪代码(对不起!),因为大熊猫用pd.DataFrame.from_dict.
pd.DataFrame.from_dict(myDict, orient='columns')
a b
2017-01-01 4.1 6.2
2017-01-02 10.8 NaN
2017-01-03 NaN 8.5
Run Code Online (Sandbox Code Playgroud)
棘手的一点是找出正确的方向来通过......这与经验有关。
快速说明,.rename_axis('Date')如果您想用名称“日期”标记索引,您可以在最后添加一个调用。
| 归档时间: |
|
| 查看次数: |
3634 次 |
| 最近记录: |