1

如何订购数据帧的标头。

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 会在 Country 之前,因为这是我在数据框中创建它的顺序。好像是按字母顺序排列的?

我如何在内存中设置这个简单的表,以便以后按我喜欢的列顺序在关系查询中使用。每次我引用数据框时,我都不想对列进行排序。

我的第一个编码帖子,永远。

4

2 回答 2

2

dict 没有排序,您可以使用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
于 2013-05-27T12:09:29.223 回答
0

Pythondict是无序的。密钥不是按照您声明或附加到它的顺序存储的。dict您给as 参数的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'])

于 2013-05-27T12:11:51.693 回答