我有一本字典如下:
entity_dict=
{u'bam': 1.0,
u'ham': 1.0,
u'jam': 0.82390874094431876,
u'kam': 1.0,
u'lam': 1.0,
u'mam': 0.82390874094431876,
u'pam': 1.0,
u'ram': 1.0,
u'sam': 0.82390874094431876,
u'tam': 1.0}
我正在尝试将其转换为数据框,我编写以下代码并获得以下结果:
entity_df = DataFrame.from_dict(entity_dict, orient='index').T
lam ham sam ram kam jam tam bam mam pam
0 1 1 0.823909 1 1 0.823909 1 1 0.823909 1
问题是数据框与字典的顺序不同: (bam,应该是第一个元素转移到最后)
因此,我编写以下代码按列进行排序:
entity_df.reindex_axis(sorted(entity_df.columns), axis=1)
我面临的问题有点奇怪。当我在python控制台中一个接一个地运行上述命令时,我获得的数据帧被排序。但是,当我一起执行它们时(通过在编辑器中编写代码然后运行整个程序)我没有看到数据框已经排序。
答案 0 :(得分:2)
Python dictionnary没有订购。尝试使用python collections模块中的OrderedDict结构。
以下是代码:
startActivityForResult(enableIME, 555);
答案 1 :(得分:2)
您可以使用OrderedDict
来保留列的顺序。从您的初始代码开始,我们可以按键对字典进行排序。
# ... definition for entity_dict
from collections import OrderedDict
sorted_dict = OrderedDict(sorted(entity_dict.items()))
# sorts column alphabetically
entity_df = DataFrame.from_dict(sorted_dict, orient='index').T
产量
bam ham jam kam lam mam pam ram sam tam
0 1 1 0.823909 1 1 0.823909 1 1 0.823909 1
或者,如果您事先知道密钥,则可以在构造dict时使用OrderedDict的元组语法以获得更好的性能。为了简洁起见,我已经按键排序了现有的字典。
因此,您可以将sorted_dict
定义为
from collections import OrderedDict
sorted_dict = OrderedDict([(u'bam', 1.0),
(u'ham', 1.0), (u'jam', 0.8239087409443188),
(u'kam', 1.0), (u'lam', 1.0),
(u'mam', 0.8239087409443188),
(u'pam', 1.0),
(u'ram', 1.0),
(u'sam', 0.8239087409443188),
(u'tam', 1.0)])