使用python对具有不同大小列的字典中的数据帧重新排序

使用python对具有不同大小列的字典中的数据帧重新排序,python,excel,pandas,Python,Excel,Pandas,我尝试使用熊猫生成数据帧,如下所示: import pandas as pd x='x' y='y' z='z' Area='Area' #len(coords_x)==len(coords_y)==len(coords_z)==64 #len(area[:,0])==18 my_dict = dict( x= np.asarray(coords_x),y= np.asarray(coords_y), z= np.asarray(coords_z), Area= area[:,0]) df

我尝试使用熊猫生成数据帧,如下所示:

import pandas as pd 

x='x'
y='y'
z='z'
Area='Area'
#len(coords_x)==len(coords_y)==len(coords_z)==64
#len(area[:,0])==18
my_dict = dict( x= np.asarray(coords_x),y= np.asarray(coords_y), z= 
np.asarray(coords_z), Area= area[:,0])
df = pd.DataFrame.from_dict(my_dict,   orient='index')    
df=df.transpose()
writer = ExcelWriter('my_data.xlsx')
df.to_excel(writer,'Sheet1',index=False)
writer.save()
问题是我得到的列顺序是:“y | x | z |区域”


如何获得变量“my|u dic”中指定的排序“x | y | z |区域”?我尝试了属性df.columns=['x'、'y'、'z'、'Area'],但没有成功。(我正在使用python 2.7)

考虑几种指定列顺序的方法:

# COLUMNS ARGUMENT OF DATAFRAME CONSTRUCTOR
df = pd.DataFrame(my_dict, columns=['x','y','z','Area'])   

# SPECIFYING COLUMNS AFTER DATAFRAME BUILD
df = pd.DataFrame.from_dict(my_dict, orient='index')[['x','y','z','Area']]

# REINDEXING
df = pd.DataFrame.from_dict(my_dict, orient='index').reindex(['x','y','z','Area'], axis='columns')

旁白-从
dict()
构建字典通常比在
{}
中定义键和值慢,如图所示。和
pandas.DataFrame
构造函数可以直接接收许多数据结构(dict、list、tuple、set、pandas.Series、numpy.array)作为第一个参数。

感谢您的回复。您的第一个响应不适合我的情况,因为我有不同长度的数组。我得到一个错误:“数组的长度必须相同”。2) 您的第二个响应出现以下错误:“['x''y''z''区域']不在索引中”。我不明白为什么。3) 如果我省略axis='columns',您的第三个响应是好的。对于2和3来说,这些都是奇怪的错误。听起来像,x,y,z和Area,它们不是列。您的输出可能是渲染层次或多索引级别。没有答案很难说。