如何在 Python 中按多個列排序 CSV 檔案?
在 Python 中,要按多個列對 CSV 檔案排序,我們可以使用 Python Pandas 庫提供的 **`sort_values()`** 方法。此方法用於透過將列名作為引數來排序值。一些常見的按多個列排序 CSV 檔案的方法如下所示。
-
**`sort_values()`**: 用於按多個列排序 DataFrame。
-
**不使用 `inplace` 的 `sort_values()`**: 用於按多個列排序 DataFrame,而不修改原始 DataFrame。
-
**`sort_index()`**: 用於在按指定列排序後按索引排序。
使用 `sort_values()`
**`sort_values()`** 方法將直接修改原始 DataFrame,透過對多個列進行排序使其更高效。
示例
在下面的示例程式碼中,**`pd.read_csv()`** 函式將 CSV 檔案載入到 Pandas DataFrame 中。透過傳遞列名列表,使用 **`sort_values()`** 按多列排序。透過設定 **`inplace=True`**,原始 DataFrame 將直接被修改,無需建立新的 DataFrame。
import pandas as pd
# Read the input CSV file
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\SalesRecords.csv")
# Sort by multiple columns: Reg_Price and Car
dataFrame.sort_values(["Reg_Price", "Car"], axis=0, ascending=True, inplace=True, na_position='first')
print("\nSorted CSV file (according to multiple columns) = \n", dataFrame)
輸入 CSV 檔案
| 汽車 | 購買日期 | 註冊價格 | |
|---|---|---|---|
| 0 | 寶馬 | 10/10/2020 | 1000 |
| 1 | 雷克薩斯 | 10/12/2020 | 750 |
| 2 | 奧迪 | 10/17/2020 | 750 |
| 3 | 捷豹 | 10/16/2020 | 1500 |
| 4 | 野馬 | 10/19/2020 | 1100 |
| 5 | 蘭博基尼 | 10/22/2020 | 1000 |
排序後的 CSV 檔案
| 汽車 | 購買日期 | 註冊價格 | |
|---|---|---|---|
| 2 | 奧迪 | 10/17/2020 | 750 |
| 1 | 雷克薩斯 | 10/12/2020 | 750 |
| 0 | 寶馬 | 10/10/2020 | 1000 |
| 5 | 蘭博基尼 | 10/22/2020 | 1000 |
| 4 | 野馬 | 10/19/2020 | 1100 |
| 3 | 捷豹 | 10/16/2020 | 1500 |
不使用 `inplace` 的 `sort_values()`
不設定引數 **`inplace=True`** 使用 **`sort_values()`** 方法,將返回一個按指定列排序的新 DataFrame。原始 DataFrame 將保持不變。
示例
在下面的示例程式碼中,不設定 **`inplace=True`**,使用 **`sort_values()`** 對指定列進行排序,並將結果新增到新的 DataFrame 中。
import pandas as pd
# Read the input CSV file
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\SalesRecords.csv")
# Sort by multiple columns without modifying the original DataFrame
sortedDataFrame = dataFrame.sort_values(["Reg_Price", "Car"], axis=0, ascending=True, na_position='first')
print("\nSorted CSV file (according to multiple columns) = \n", sortedDataFrame)
排序後的 CSV 檔案
| 汽車 | 購買日期 | 註冊價格 | |
|---|---|---|---|
| 2 | 奧迪 | 10/17/2020 | 750 |
| 1 | 雷克薩斯 | 10/12/2020 | 750 |
| 0 | 寶馬 | 10/10/2020 | 1000 |
| 5 | 蘭博基尼 | 10/22/2020 | 1000 |
| 4 | 野馬 | 10/19/2020 | 1100 |
| 3 | 捷豹 | 10/16/2020 | 1500 |
使用 `sort_index()`
**`sort_index()`** 方法用於使用其 **索引** 對 DataFrame 進行排序。在按多列排序後,我們還可以使用 **`sort_index()`** 方法按升序或降序排序。
示例
import pandas as pd
# Read the input CSV file
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\SalesRecords.csv")
# Sort by multiple columns
sortedDataFrame = dataFrame.sort_values(["Reg_Price", "Car"], axis=0, ascending=True, na_position='first')
# Further sort by index (optional)
sortedDataFrame = sortedDataFrame.sort_index()
print("\nSorted CSV file (according to multiple columns and index) = \n", sortedDataFrame)
排序後的 CSV 檔案
| 汽車 | 購買日期 | 註冊價格 | |
|---|---|---|---|
| 0 | 寶馬 | 10/10/2020 | 1000 |
| 1 | 雷克薩斯 | 10/12/2020 | 750 |
| 2 | 奧迪 | 10/17/2020 | 750 |
| 3 | 捷豹 | 10/16/2020 | 1500 |
| 4 | 野馬 | 10/19/2020 | 1100 |
| 5 | 蘭博基尼 | 10/22/2020 | 1000 |
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP