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。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: