Python 数据帧未按列名排序
我有一本字典如下:Python 数据帧未按列名排序,python,pandas,Python,Pandas,我有一本字典如下: 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} 我试图将其转换为dataframe,我编写了以下代码并得到以下结果: ent
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}
我试图将其转换为dataframe,我编写了以下代码并得到以下结果:
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控制台中逐个运行上述两个命令时,我得到的数据帧将被排序。但是,当我同时执行它们时(通过在编辑器中编写代码,然后运行整个过程),我看不到数据帧已排序。Python字典未排序。尝试使用python集合模块中的结构 代码如下:
import pandas as pd
from collections import OrderedDict
entity_dict = OrderedDict()
entity_dict['bam'] = 1.0
entity_dict['ham'] = 1.0
entity_dict['jam'] = 0.82390874094431876
entity_dict['kam'] = 1.0
entity_dict['lam'] = 1.0
entity_dict['mam'] = 0.82390874094431876
entity_dict['pam'] = 1.0
entity_dict['ram'] = 1.0
entity_dict['sam'] = 0.82390874094431876
entity_dict['tam'] = 1.0
entity_df = pd.DataFrame.from_dict(entity_dict, orient='index').T
print(entity_df)
Python词汇表没有排序。尝试使用python集合模块中的结构 代码如下:
import pandas as pd
from collections import OrderedDict
entity_dict = OrderedDict()
entity_dict['bam'] = 1.0
entity_dict['ham'] = 1.0
entity_dict['jam'] = 0.82390874094431876
entity_dict['kam'] = 1.0
entity_dict['lam'] = 1.0
entity_dict['mam'] = 0.82390874094431876
entity_dict['pam'] = 1.0
entity_dict['ram'] = 1.0
entity_dict['sam'] = 0.82390874094431876
entity_dict['tam'] = 1.0
entity_df = pd.DataFrame.from_dict(entity_dict, orient='index').T
print(entity_df)
您可以使用
OrderedDict
来保留列的顺序。从您的初始代码开始,我们可以按键对dict进行排序
# ... 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的元组语法,以获得更好的性能。为了简洁起见,我在这里按键对现有的dict进行了排序
因此,您可以等效地定义sorted\u 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)])
您可以使用
OrderedDict
来保留列的顺序。从您的初始代码开始,我们可以按键对dict进行排序
# ... 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的元组语法,以获得更好的性能。为了简洁起见,我在这里按键对现有的dict进行了排序
因此,您可以等效地定义sorted\u 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)])
reindex\u axis
不会在适当的位置更改数据帧,您必须重新分配它以查看适配帧:entity\u df=entity\u df.reindex\u axis(..)
reindex\u axis不会在适当的位置更改数据帧,您必须重新分配它以查看适配帧:entity\u df=entity\u df.reindex\u axis(..)