问题描述
我创建一个OrderedDict:
from collections import OrderedDict
od = OrderedDict([((2,9),0.5218),((2,0),0.3647),((3,15),0.3640),8),0.3323),28),0.3310),0.3281),10),0.2938),0.2719)])
然后我将其输入到pandas DataFrame构造函数中:
import pandas as pd
df = pd.DataFrame({'values': od})
结果是这样的:
相反,它应该给出这个:
我不明白这是怎么回事?
P.S .:我不是在寻找解决问题的替代方法(不过,如果您认为这会对社区有所帮助,也欢迎您发布)。我只想了解为什么这里不起作用。这是一个错误,还是有逻辑? 这也不是此link的副本,因为我专门使用了OrderedDict,而不是普通的字典。
解决方法
如果您想以与字典相同的顺序获取DataFrame,则可以
$selectedcolor
输出
df = pd.DataFrame(od.values(),index=od.keys(),columns=['values'])
frame source code中唯一提到 values
2 9 0.5218
0 0.3647
3 15 0.3640
8 0.3323
2 28 0.3310
15 0.3281
10 0.2938
3 9 0.2719
的地方是OrderedDict
的示例,因此此处无用。
似乎,即使您传递的是有序结构,将其包装在公用字典df.to_dict()
中之后,默认情况下也会对其进行解析和重新排序,而pandas从OrderedDict中获取其索引。
如果您还使用列标签(字典json)构建字典,则该行为似乎被否决。
{'values': od}