更改 Pandas DataFrame 列的順序

Luqman Khan 2023年1月30日
  1. 使用 reindex() 函式更改 Python Pandas Dataframe 列的順序
  2. まとめ
更改 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 列均值

上面的輸出顯示了第 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 中用於執行各種資料操作操作。

相關文章 - Pandas DataFrame