如何解决Pandas DataFrame构造函数对行进行排序,即使使用OrderedDict作为输入
我创建一个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}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。