在数据预处理过程中可能需要将列的顺序颠倒,有两种方法。
import numpy as np import pandas as pd df = pd.DataFrame(np.array(range(20)).reshape(4,5)) print(df)
原始dataframe如下:
0 1 2 3 4 0 0 1 2 3 4 1 5 6 7 8 9 2 10 11 12 13 14 3 15 16 17 18 19
1. 方法一
手动设置列名列表,应用在dataframe中(适合列名比较少的情况)
我们可以手动来更换列的顺序
cols = [4,3,2,1,0] df = df.ix[:,cols] print(df)
输出如下:
4 3 2 1 0 0 4 3 2 1 0 1 9 8 7 6 5 2 14 13 12 11 10 3 19 18 17 16 15
2. 方法二
pandas提供颠倒列顺序的方式
可以看出当数据的列较多时,方法一会非常繁琐,pandas提供一种非常简便的方式来进行列顺序的颠倒。
df = df.ix[:, ::-1] print(df)
输出如下:
4 3 2 1 0 0 4 3 2 1 0 1 9 8 7 6 5 2 14 13 12 11 10 3 19 18 17 16 15
补充:Python列表排序与倒序
python学习笔记
列表排序
1、sort()
2、sorted()
3、reverse()
sort()的使用
letters = ['d','a','e','c','b'] print letters ['d','a','e','c','b'] letters.sort() print letters ['a','b','c','d','e']
sort()会自动按照字母顺序对字符串由小到大排序,如果数字就由小到大
注:sort()会修改原来的列表他是修改列表,而不是创建新的列表。
不应该
print letters.sort()
而应该
letters.sort() print letters
还可以用.sorted()函数
# 得到一个有序的副本列表 #而不影响原来列表的顺序 old = ['d','a','e','c','b'] new = sorted(old) print old ['d','a','e','c','b'] print new ['a','b','c','d','e']
reverse的使用
# 方法1 作为reverse()函数 letters = ['d','a','e','c','b'] letters.sort() print letters ['a','b','c','d','e'] letters.reverse() print letters ['e','d','c','b','a'] # 方法2 作为sort()函数参数 letters = ['d','a','e','c','b'] letter.sort(reverse = Ture)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。