HOWTO · Python

在 Python 中將串列轉換為 Pandas DataFrame

本文介紹如何在 Python 中將串列轉換為 Pandas DataFrame

本頁內容

使用 pd.DataFrame(my_list) 將 Python 串列轉換為 Pandas DataFrame。一維串列會成為單一欄,列索引預設為整數。使用 columns 引數為該欄命名、使用 index 指定列標籤,或傳入由串列組成的串列來建立多個欄位。

在 Python 中將串列轉換為 Pandas DataFrame

DataFrame 是具有標籤列與欄的二維表格。匯入 Pandas,將串列傳給它的 DataFrame 建構函式,再把結果指定給變數。在指令碼中,呼叫 print(df) 即可顯示表格;在 Notebook 或互動式工作階段中,直接求值 df 就會顯示表格。

這個範例會將每個姓名放在標籤為 0 的單一欄中。Pandas 預設會從 0 開始編列索引標籤。pd.DataFrame() 是用來建立表格的建構函式,不是對串列呼叫的方法。調整這個呼叫時,請將資料作為第一個引數傳入,再使用 columns 或 index 等具名引數描述表格。

import pandas as pd

my_list = ["Tom", "Mark", "Tony"]
df = pd.DataFrame(my_list)
print(df)

在 Python 中將串列存入 Pandas DataFrame 的欄位

建立 DataFrame 時,將只含一個標籤的串列傳給 columns 引數。這個標籤會命名欄位,不會改變列索引。欄標籤的數量必須與輸入資料的欄數相同。

此範例中的值維持原本順序,而 Names 會取代預設欄標籤 0。

import pandas as pd

my_list = ["Tom", "Mark", "Tony"]
df = pd.DataFrame(my_list, columns=["Names"])
print(df)

在 Python 中使用索引將串列轉換為 DataFrame

使用 index 引數設定列標籤,並以 columns 設定欄標籤。每個串列值都要有一個索引標籤,讓每一列都有對應的標籤。這些標籤會取代預設的整數索引,不會成為另一個資料欄。例如,第一個值以 i. 識別,第二個以 ii. 識別,第三個以 iii. 識別。請依資料內容選擇合適的標籤,例如日期或產品識別碼。

import pandas as pd

my_list = ["Tom", "Mark", "Tony"]
df = pd.DataFrame(
    my_list,
    index=["i.", "ii.", "iii."],
    columns=["Names"],
)
print(df)

在 Python 中使用 zip() 配對兩個串列並建立單一 DataFrame

Python 的 zip() 會依位置配對輸入可迭代物件中的值。將配對結果傳給 pd.DataFrame(),並為每個輸入串列提供一個欄標籤。此範例使用姓名與身高兩個平行串列,因此每個姓名都會與對應的身高位於同一列。若要配對超過兩個串列,可以全部傳給 zip(),並提供相符數量的欄標籤。

當最短的輸入用完時,zip() 就會停止。如果預期每個來源串列都要為每一列提供一個值,建立 DataFrame 前請先確認各串列長度相同。

import pandas as pd

name_list = ["Tom", "Mark", "Tony"]
height_list = [150, 151, 152]
rows = zip(name_list, height_list)
df = pd.DataFrame(rows, columns=["Name", "Height"])
print(df)

在 Python 中將多維串列轉換為 Pandas DataFrame

若要表示表格資料,請將每一列表示為內層串列,再把外層串列傳給 pd.DataFrame()。為 columns 提供的標籤數量,應與每個內層串列中的值數量相同。此範例的每個內層串列都依序包含姓名與年齡,因此表格有兩欄、三列。

當每一列的欄位相同且順序一致時,這種結構很適合用來建立表格。請確認列中的值與提供的標籤相符;若記錄的欄位不同,請先將資料整理成一致的表格結構。

import pandas as pd

info = [["Tom", 18], ["Mark", 25], ["Tony", 68]]
df = pd.DataFrame(info, columns=["Name", "Age"])
print(df)