微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas DataFrame构造函数对行进行排序,即使使用OrderedDict作为输入

如何解决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})

结果是这样的:

enter image description here

相反,它应该给出这个:

enter image description here

我不明白这是怎么回事?

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 举报,一经查实,本站将立刻删除。