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谢谢你的反馈!很高兴你成功了