pandas 顛倒列順序的兩種解決方案
在數據預處理過程中可能需要將列的順序顛倒,有兩種方法。
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)
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- Pandas中DataFrame的基本操作之重新索引講解
- python數學建模(SciPy+ Numpy+Pandas)
- python數學建模是加深Numpy和Pandas學習
- Python列表排序 list.sort方法和內置函數sorted用法
- Python Numpy教程之排序,搜索和計數詳解