Python 列名分配中的大写优先顺序

Python 列名分配中的大写优先顺序,python,pandas,Python,Pandas,Pandas中的列名分配偏向于大写而不是小写,这有什么原因吗 例如: dframe = DataFrame({'city':['Alma','Brian Head', 'Fox Park'], 'altitude':[3158,3000,2762]}) 返回一个数据帧,其中列的顺序为海拔高度、城市 鉴于: dframe = DataFrame({'City':['Alma','Brian Head', 'Fox Park'],

Pandas中的列名分配偏向于大写而不是小写,这有什么原因吗

例如:

dframe = DataFrame({'city':['Alma','Brian Head', 'Fox Park'],
                    'altitude':[3158,3000,2762]})
返回一个数据帧,其中列的顺序为海拔高度、城市

鉴于:

dframe = DataFrame({'City':['Alma','Brian Head', 'Fox Park'],
                    'altitude':[3158,3000,2762]})
返回一个数据帧,其中列的顺序为城市、海拔高度


这是特定的还是一般的python行为?

您实际上没有问这个问题,但我假设有一个关于如何保持原始顺序的隐含问题?如果是这样,有三种方法:

1) 相同的基本字典构造函数,但包含在集合中。OrderedDict(感谢@shx2的更正):

2) 非字典构造函数,其中分别指定数据数组和列名,但是,这本质上需要以行为中心的条目,而不是像字典构造函数那样以列为中心:

lst = [['Alma','Brian Head','Fox Park'],
       [3158,3000,2762]]
df2 = pd.DataFrame( map(list, zip(*lst)),
                    columns = ['city','altitude'] )
3) 最简单的方法可能只是在创建数据帧后指定顺序(感谢@EdChum在原始帖子中捕捉到错误):

测试所有三种情况的结果是否相同:

In [149]: all(df1==df2)
Out[149]: True

In [150]: all(df1==df3)
Out[150]: True

您正在传递dict,因此密钥顺序不一定与声明为no的顺序相同?这是python的一般行为。您可以尝试使用这些名称对列表进行排序以查看它。最后一个列表不会重命名列而不是重新排序它们吗?你想
df.ix[:,['city','altitude']]
对它们重新排序,或者你可以
df=df['city','altitude']]
是的,第二种方法是我最初打算做的。现在修好了,谢谢!创建
OrderedDict
时传递dict超出了
OrderedDict
的目的,…@shx2现已修复,非常感谢您的更正。
df3 = df[['city','altitude']]
In [149]: all(df1==df2)
Out[149]: True

In [150]: all(df1==df3)
Out[150]: True