Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python dict到数据帧的列表未按顺序排列_Python_Pandas - Fatal编程技术网

Python dict到数据帧的列表未按顺序排列

Python dict到数据帧的列表未按顺序排列,python,pandas,Python,Pandas,我有一个for循环,从中生成一个dict列表,如下所示 isv = [] for obj in hearts: rawvalue = obj.raw - readvalue if rawvalue < 0: rawvalue = rawvalue + 440 else: rawvalue obj = str(obj) obj = ((obj.

我有一个for循环,从中生成一个dict列表,如下所示

   isv = []
   for obj in hearts:            
       rawvalue = obj.raw - readvalue
       if rawvalue < 0:
           rawvalue = rawvalue + 440
       else:
           rawvalue
       obj = str(obj)
       obj = ((obj.strip('<').split(" ")[0]))
       isv.append({'Plo':obj,'Ots': viewdata(rawvalue)[0][3],'Gts':viewdata(rawvalue)[0][0],'Mts': viewdata(rawvalue)[0][1],'Frts': viewdata(rawvalue)[0][2],'Fin':rawvalue})
由于某些原因,DF列的顺序与isv中提到的不一致。附加为Plo、Ots、Gts、Mts、FRT、Fin 应该做些什么才能使这项工作成功

样本数据:

Plo Ots     Gts     Mts     Frts    Fin
1   Parcel  Red     Blue    Yellow  678.547
2   Gift    Green   purple  Black   876.214
3   Order   Green   purple  Black   877.217
4   Base    Green   purple  Black   922.145
5   Flat    Green   purple  Black   964.2
6   Deal    Green   purple  Black   400
7   Mission Green   purple  Black   450.124
8   Base    Green   purple  Black   520.2145
9   Flat    Green   purple  Black   570.145
10  Deal    Green   purple  Black   600.178

您不应该期望
pandas
将字典视为一个有序的集合,即使在Python 3.6+中,字典内部保留了顺序

如果列顺序很重要,那么您有几个选项

构建数据表后重新排序

只需通过列表重新排列列顺序:

col_list = ['Plo', 'Ots', 'Gts', 'Mts', 'Frts', 'Fin']
pdadata = pdadata[col_list]
使用集合。OrderedDict

您可以将
OrderedDict
对象附加到列表中,而不是常规词典中

请注意,这通常通过元组列表实现:

from collections import OrderedDict

isv.append(OrderedDict([('Plo', obj), ('Ots', viewdata(rawvalue)[0][3]),
                        ('Gts', viewdata(rawvalue)[0][0]),
                        ('Mts',  viewdata(rawvalue)[0][1]),
                        ('Frts', viewdata(rawvalue)[0][2]), ('Fin', rawvalue)]))

您能否将您的问题包括在一些数据中,以便我们可以复制您的错误?添加了示例数据我能够使ordereddict选项正常工作,谢谢。我怎么做另一个呢?在通过list@Python_newbie就这样,没别的了。如果您
print(pdadata)
,列将按照
col\u list
中的顺序对齐。对不起,这个问题看起来可能不好,pdadata是我存储数据帧的地方,我应该使用相同的变量名吗?我不明白:(这取决于你,如果你想把它存储在同一个变量中,可以使用
pdadata=pdadata[col_list]
。这绝对没有错。如果你想存储一个新变量,可以使用
pdadata2=pdadata[col_list]
。原理是一样的,要重新排列列,可以使用
df[col_list]
from collections import OrderedDict

isv.append(OrderedDict([('Plo', obj), ('Ots', viewdata(rawvalue)[0][3]),
                        ('Gts', viewdata(rawvalue)[0][0]),
                        ('Mts',  viewdata(rawvalue)[0][1]),
                        ('Frts', viewdata(rawvalue)[0][2]), ('Fin', rawvalue)]))