使用Python在DataFrame中排序标头

时间:2013-05-27 11:07:54

标签: python header dataframe pandas

如何订购数据框的标头。

from pandas import *
import pandas
import numpy as np
df2 = DataFrame({'ISO':['DE','CH','AT','FR','US'],'Country': 
['Germany','Switzerland','Austria','France','United States']})
print df2

我默认的结果是:

         Country ISO
0        Germany  DE
1    Switzerland  CH
2        Austria  AT
3         France  FR
4  United States  US

但我认为ISO将在国家之前,因为那是我在数据框中创建它的顺序。它看起来像按字母顺序排序?

如何在内存中设置这个简单的表,以便稍后在我的首选列顺序中的关系查询中使用。每次我引用数据帧时我都不想订购列。

我的第一个编码职位,永远。

2 个答案:

答案 0 :(得分:2)

dict没有排序,您可以使用 columns 参数来强制执行。如果未提供 columns ,则默认排序确实按字母顺序排列。

In [2]: df2 = DataFrame({'ISO':['DE','CH','AT','FR','US'],
   ...:                  'Country': ['Germany','Switzerland','Austria','France','United States']},
   ...:                  columns=['ISO', 'Country'])

In [3]: df2
Out[3]:
  ISO        Country
0  DE        Germany
1  CH    Switzerland
2  AT        Austria
3  FR         France
4  US  United States

答案 1 :(得分:0)

Python dict是无序的。密钥不会按您声明或附加的顺序存储。您为dict作为参数提供的DataFrame具有DataFrame认为理所当然的任意顺序。

您有几种方法可以解决问题:

  1. 如果您确实需要字典作为输入,请使用OrderedDict对象而不是dict

    df2 = DataFrame(OrderedDict([('ISO',['DE','CH','AT','FR','US']),('Country',['Germany','Switzerland','Austria','France','United States'])]))

  2. 如果您不首先依赖字典,请使用声明列的参数调用DataFrame

    df2 = DataFrame({'ISO':['DE','CH','AT','FR','US'],'Country': ['Germany','Switzerland','Austria','France','United States']}, columns=['ISO', 'Country'])