如何订购数据框的标头。
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将在国家之前,因为那是我在数据框中创建它的顺序。它看起来像按字母顺序排序?
如何在内存中设置这个简单的表,以便稍后在我的首选列顺序中的关系查询中使用。每次我引用数据帧时我都不想订购列。
我的第一个编码职位,永远。
答案 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认为理所当然的任意顺序。
您有几种方法可以解决问题:
如果您确实需要字典作为输入,请使用OrderedDict
对象而不是dict
:
df2 = DataFrame(OrderedDict([('ISO',['DE','CH','AT','FR','US']),('Country',['Germany','Switzerland','Austria','France','United States'])]))
如果您不首先依赖字典,请使用声明列的参数调用DataFrame
:
df2 = DataFrame({'ISO':['DE','CH','AT','FR','US'],'Country':
['Germany','Switzerland','Austria','France','United States']}, columns=['ISO', 'Country'])