Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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 如何重新组织字符串索引?_Python_Pandas - Fatal编程技术网

Python 如何重新组织字符串索引?

Python 如何重新组织字符串索引?,python,pandas,Python,Pandas,我正在从嵌套字典创建一个数据帧,如下所示: dict={ “循环1”:{ 'pv':1,'sp':2,'op':3,'字符串模式':4,'自动模式':5,'级联模式':'NaN','操作':6,'操作最小值':1.0,'操作最大值':10.0 }, “循环2”:{ ‘pv’:7,‘sp’:8,‘op’:9,‘字符串模式’:10,‘自动模式’:11,‘级联模式’:‘NaN’,‘操作’:12,‘操作最低’:1.0,‘操作最高’:10.0 } } 当我使用df=pd.DataFrame(dict)时

我正在从嵌套字典创建一个数据帧,如下所示:

dict={
“循环1”:{
'pv':1,'sp':2,'op':3,'字符串模式':4,'自动模式':5,'级联模式':'NaN','操作':6,'操作最小值':1.0,'操作最大值':10.0
},
“循环2”:{
‘pv’:7,‘sp’:8,‘op’:9,‘字符串模式’:10,‘自动模式’:11,‘级联模式’:‘NaN’,‘操作’:12,‘操作最低’:1.0,‘操作最高’:10.0
}
}
当我使用
df=pd.DataFrame(dict)
时,我得到以下输出:

                      Loop1    Loop2  
    auto_mode          5        11           
    cascade_mode       NaN     NaN          
    op                 3        9      
    operational        6        12         
    operational_max   10.0     10.0            
    operational_min   1.0      1.0      
    pv                 1       7   
    sp                 2       8        
    string_mode        4       10    
如您所见,数据帧的索引会自动按字母顺序重新组织

有没有办法防止Pandas自动重新组织索引,以便保留字典中的顺序

注: 我尝试使用pandas.DataFrame.sort_索引(dict,inplace=True),但出现以下错误:

AttributeError: 'dict' object has no attribute '_get_axis_number'

任何帮助都将不胜感激

下面的代码片段将为您提供一个数据帧,其索引顺序与dict
Loop1
的键顺序相同,这似乎是您所追求的

代码:

import pandas as pd
d = {'Loop1': {'pv': 1, 'sp': 2, 'op': 3, 'string_mode': 4, 'auto_mode': 5, 'cascade_mode': 'NaN', 'operational': 6, 'operational_min': 1.0, 'operational_max': 10.0}, 'Loop2': {'pv': 7, 'sp': 8, 'op': 9, 'string_mode': 10, 'auto_mode': 11, 'cascade_mode': 'NaN', 'operational': 12, 'operational_min': 1.0, 'operational_max': 10.0}}
order = list(d['Loop1'].keys())

df=pd.DataFrame(d)
df = df.T[order].T
df
                Loop1 Loop2
pv                  1     7
sp                  2     8
op                  3     9
string_mode         4    10
auto_mode           5    11
cascade_mode      NaN   NaN
operational         6    12
operational_min     1     1
operational_max    10    10
输出:

import pandas as pd
d = {'Loop1': {'pv': 1, 'sp': 2, 'op': 3, 'string_mode': 4, 'auto_mode': 5, 'cascade_mode': 'NaN', 'operational': 6, 'operational_min': 1.0, 'operational_max': 10.0}, 'Loop2': {'pv': 7, 'sp': 8, 'op': 9, 'string_mode': 10, 'auto_mode': 11, 'cascade_mode': 'NaN', 'operational': 12, 'operational_min': 1.0, 'operational_max': 10.0}}
order = list(d['Loop1'].keys())

df=pd.DataFrame(d)
df = df.T[order].T
df
                Loop1 Loop2
pv                  1     7
sp                  2     8
op                  3     9
string_mode         4    10
auto_mode           5    11
cascade_mode      NaN   NaN
operational         6    12
operational_min     1     1
operational_max    10    10
如您所见,我已将您的
dict
重命名为简单的
d
,因为
dict()
本身就是一个python函数。由于您的数据示例以
'Loop3':…et
结束,我只获取了您的示例的一个子集


有一种非常简单的方法来定义数据帧中列的顺序。就行而言,没有那么多。因此,我在这里要做的是转置初始数据帧,将列顺序定义为与dict键的顺序相同,然后将其转置回原位,使行(或索引)以所需的顺序结束。

感谢您的回复!这非常有效。在实际代码中,我的dict有一个唯一标识符,但我只是将dict用作示例。我以后一定会用别的东西。@BrianKeith谢谢你的反馈!很高兴你成功了