【发布时间】:2016-11-11 12:06:15
【问题描述】:
我将命名元组定义如下:
In[37]: from collections import namedtuple
Point = namedtuple('Point', 'x y')
嵌套字典的格式如下:
In[38]: d
Out[38]:
{1: {None: {1: Point(x=1.0, y=5.0), 2: Point(x=4.0, y=8.0)}},
2: {None: {1: Point(x=45324.0, y=24338.0), 2: Point(x=45.0, y=38.0)}}}
我正在尝试从字典 d 创建一个熊猫数据框,而不必执行 for 循环。
我已经成功地通过这样做从字典的子集创建了数据框:
In[40]: df=pd.DataFrame(d[1][None].values())
In[41]: df
Out[41]:
x y
0 1 5
1 4 8
但我希望能够从整个字典中创建数据框。
我希望数据框输出以下内容(我正在使用多索引表示法):
In[42]: df
Out[42]:
Subcase Step ID x y
1 None 1 1.0 5.0
2 4.0 8.0
2 None 1 45324.0 24338.0
2 45.0 38.0
DataFrame的from_dict方法,最多只支持两层嵌套,所以没能用。我也在考虑修改 d 字典的结构来实现我的目标。此外,也许它不必是字典。
谢谢。
【问题讨论】:
-
你说它不一定是字典——字典中数据的来源是什么?还是您指的是在将 dict 转换为数据框之前将其转换为中间结构?
-
数据源来自二进制文件。它被转换为字典,以便于访问和快速查询。理想情况下,它仍然是一个命令。我想说的是,我可以更改将二进制文件更改为 dict 的代码,并使用对 pandas 更友好的东西。转换 dict 似乎效率低下。
标签: python pandas dictionary dataframe namedtuple