更改 Pandas DataFrame 列的順序
Pandas DataFrame 是二維資料結構,以行和列的形式儲存資訊。
使用 reindex()
函式更改 Python Pandas Dataframe 列的順序
pandas 中的 reindex()
函式可用於重新排序或重新排列 DataFrame 的列。我們將以所需的順序建立一個新的列列表,然後使用 data= data[cols]
以這個新順序重新排列列。
首先,我們需要匯入 python 庫 numpy 和 pandas。然後宣告一個變數 data,我們在其中使用 np.random.rand(10, 5)
函式建立一個 5 列和 10 行的 DataFrame。
此函式建立隨機值以使 DataFrame 具有以下 DataFrame:
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.rand(10, 5))
data
輸出:
0 1 2 3 4
0 0.277764 0.778528 0.443376 0.838117 0.256161
1 0.986206 0.647985 0.061442 0.703383 0.415676
2 0.963891 0.477693 0.558834 0.616453 0.842086
3 0.746559 0.180196 0.038300 0.391343 0.877589
4 0.554592 0.958017 0.286683 0.526546 0.185318
5 0.370137 0.751773 0.594891 0.570358 0.779640
6 0.795137 0.271263 0.742291 0.615652 0.728313
7 0.912602 0.254319 0.455149 0.241939 0.250034
8 0.125905 0.300788 0.767852 0.265875 0.599287
9 0.400207 0.516693 0.345934 0.691878 0.088651
通過分配,新增另一列:使用以下程式碼,因此該列計算上面建立的 DataFrame 的 mean
值。
data["mean"] = data.mean(1)
data
輸出:
上面的輸出顯示了第 6 列的平均值。我們如何將列均值移到前面,即,使其成為第一列,同時保持其他列的原始順序?
一種直接的解決方案是使用列列表重新分配 DataFrame,然後可以根據需要對其進行重構。columns.tolist()
函式在列表中列出列的名稱。
columns_name = data.columns.tolist()
columns_names
輸出:
[0, 1, 2, 3, 4, 'mean']
根據需要重新排列 cols。這就是我們如何讓最後一個元素到達頂部:
columns = columns_name[-1:] + columns_name[:-1]
columns
輸出:
['mean', 0, 1, 2, 3, 4]
上面的輸出顯示平均列移動到第一個。同樣,我們更改索引值以首先更改沒有 4 個位置的列。
columns = columns_name[-2:] + columns_name[:-3]
columns
輸出:
[4, 'mean', 0, 1, 2]
如你所見,第 4 列移動到第 1 列和第 1 列,這意味著移動到第 2 位置。這就是我們改變列順序的方式。
現在我們使用 reindex()
函式對 python DataFrame 的列進行重新排序。你還可以使用列名列表並將該列表傳遞給 reindex()
方法,如下所示。
使用 reindex()
函式重新排序。reindex()
方法將列作為列表接受。
帶有列名的單個大括號用於按名稱更改列順序。
column_names = [0, 2, 3, 1, 4, "mean"]
data = data.reindex(columns=column_names)
data
輸出:
0 2 3 1 4 mean
0 0.277764 0.443376 0.838117 0.778528 0.256161 0.518789
1 0.986206 0.061442 0.703383 0.647985 0.415676 0.562938
2 0.963891 0.558834 0.616453 0.477693 0.842086 0.691791
3 0.746559 0.038300 0.391343 0.180196 0.877589 0.446797
4 0.554592 0.286683 0.526546 0.958017 0.185318 0.502231
5 0.370137 0.594891 0.570358 0.751773 0.779640 0.613360
6 0.795137 0.742291 0.615652 0.271263 0.728313 0.630531
7 0.912602 0.455149 0.241939 0.254319 0.250034 0.422809
8 0.125905 0.767852 0.265875 0.300788 0.599287 0.411942
9 0.400207 0.345934 0.691878 0.516693 0.088651 0.408673
上面的輸出顯示你可以通過使用列名索引 DataFrame 並建立新 DataFrame 來重新排列列。
然後按索引名稱按索引值使用 reindex()
。對索引名稱使用雙括號。
data = data[[1, 0, 2, 3, 4, "mean"]]
data
輸出:
1 0 2 3 4 mean
0 0.778528 0.277764 0.443376 0.838117 0.256161 0.518789
1 0.647985 0.986206 0.061442 0.703383 0.415676 0.562938
2 0.477693 0.963891 0.558834 0.616453 0.842086 0.691791
3 0.180196 0.746559 0.038300 0.391343 0.877589 0.446797
4 0.958017 0.554592 0.286683 0.526546 0.185318 0.502231
5 0.751773 0.370137 0.594891 0.570358 0.779640 0.613360
6 0.271263 0.795137 0.742291 0.615652 0.728313 0.630531
7 0.254319 0.912602 0.455149 0.241939 0.250034 0.422809
8 0.300788 0.125905 0.767852 0.265875 0.599287 0.411942
9 0.516693 0.400207 0.345934 0.691878 0.088651 0.408673
まとめ
我們已經知道如何使用 reindex()
方法和 DataFrame 索引對 DataFrame 列重新排序,並按字母順序按升序或降序對列進行排序。
此外,我們還發現瞭如何將列移動到第一個、最後一個或特定位置。這些操作可以在 pandas DataFrame 中用於執行各種資料操作操作。