pandas中的DataFrame按指定顺序输出所有列

问题:

输出新建的DataFrame对象时,DataFrame中各列的显示顺序和DataFrame定义中的顺序不一致。

例如:

import pandas as pd
grades = [48,99,75,80,42,80,72,68,36,78]
df = pd.DataFrame( {'ID': ["x%d" % r for r in range(10)],
'Gender' : ['F', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'M', 'M'],
 'ExamYear': ['2007','2007','2007','2008','2008','2008','2008','2009','2009','2009'],
 'Class': ['algebra', 'stats', 'bio', 'algebra', 'algebra', 'stats', 'stats', 'algebra', 'bio', 'bio'],
 'Participated': ['yes','yes','yes','yes','no','yes','yes','yes','yes','yes'],
 'Passed': ['yes' if x > 50 else 'no' for x in grades],
'Employed': [True,True,True,False,False,False,False,True,True,False],
 'Grade': grades})
print(df)

输出为:

     Class Employed ExamYear Gender  Grade  ID Participated Passed
0  algebra     True     2007      F     48  x0          yes     no
1    stats     True     2007      M     99  x1          yes    yes
2      bio     True     2007      F     75  x2          yes    yes
3  algebra    False     2008      M     80  x3          yes    yes
4  algebra    False     2008      F     42  x4           no     no
5    stats    False     2008      M     80  x5          yes    yes
6    stats    False     2008      F     72  x6          yes    yes
7  algebra     True     2009      M     68  x7          yes    yes
8      bio     True     2009      M     36  x8          yes     no
9      bio    False     2009      M     78  x9          yes    yes

解决办法

在以上代码中增加以下代码:

cols=['ID','Gender','ExamYear','Class','Participated','Passed','Employed','Grade']
df=df.ix[:,cols]

df=df.ix[:,cols]语句表示,DataFrame的行索引不变,列索引是cols中给定的索引。

输出为:

  ID Gender ExamYear    Class Participated Passed Employed  Grade
0  x0      F     2007  algebra          yes     no     True     48
1  x1      M     2007    stats          yes    yes     True     99
2  x2      F     2007      bio          yes    yes     True     75
3  x3      M     2008  algebra          yes    yes    False     80
4  x4      F     2008  algebra           no     no    False     42
5  x5      M     2008    stats          yes    yes    False     80
6  x6      F     2008    stats          yes    yes    False     72
7  x7      M     2009  algebra          yes    yes     True     68
8  x8      M     2009      bio          yes     no     True     36
9  x9      M     2009      bio          yes    yes    False     78
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值