在数据预处理过程中可能需要将列的顺序颠倒,有两种方法。
1
2
3
4
|
import numpy as np
import pandas as pd
df = pd.DataFrame(np.array( range ( 20 )).reshape( 4 , 5 ))
print (df)
|
原始dataframe如下:
1
2
3
4
5
|
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中(适合列名比较少的情况)
我们可以手动来更换列的顺序
1
2
3
|
cols = [ 4 , 3 , 2 , 1 , 0 ]
df = df.ix[:,cols]
print (df)
|
输出如下:
1
2
3
4
5
|
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提供一种非常简便的方式来进行列顺序的颠倒。
1
2
|
df = df.ix[:, :: - 1 ]
print (df)
|
输出如下:
1
2
3
4
5
|
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()的使用
1
2
3
4
5
6
|
letters = [ 'd' , 'a' , 'e' , 'c' , 'b' ]
print letters
[ 'd' , 'a' , 'e' , 'c' , 'b' ]
letters.sort()
print letters
[ 'a' , 'b' , 'c' , 'd' , 'e' ]
|
sort()会自动按照字母顺序对字符串由小到大排序,如果数字就由小到大
注:sort()会修改原来的列表他是修改列表,而不是创建新的列表。
不应该
1
|
print letters.sort()
|
而应该
1
2
|
letters.sort()
print letters
|
还可以用.sorted()函数
1
2
3
4
5
6
7
8
|
# 得到一个有序的副本列表
#而不影响原来列表的顺序
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
2
3
4
5
6
7
8
9
10
11
|
# 方法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)
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/qq_26255311/article/details/90199484