如何在 Pandas DataFrame 中將字串轉換為整數?


Python 是最流行的資料分析和處理程式語言之一,這並非沒有道理。憑藉其直觀的語法和豐富的庫生態系統,Python 為資料處理提供了強大的平臺。Pandas 就是這樣一個庫,它是一個高度通用的資料處理和分析工具。Pandas 允許我們輕鬆地以各種方式操作和轉換資料,使其成為任何資料分析師或科學家工具包中不可或缺的一部分。

在本教程中,我們將重點關注資料分析中經常出現的一個特定問題:在 Pandas DataFrame 中將字串資料轉換為整數資料。作為資料分析師,我們經常遇到儲存為字串的資料,即使將其作為數值資料更有用。在文章的下一節中,我們將探討幾種在 Pandas 中將字串資料轉換為整數資料的方法,包括使用 astype() 和 to_numeric() 函式。我們還將討論在處理資料轉換時需要記住的一些最佳實踐和注意事項。

如何在 Pandas DataFrame 中將字串轉換為整數?

在 Pandas 中將字串資料轉換為整數資料可以使用多種方法。

方法一:使用 astype() 函式

Pandas 中的 astype() 函式允許我們更改 DataFrame 中列的資料型別。此方法簡單明瞭,在將 Pandas 中的字串資料轉換為整數資料時非常有用。我們可以將 astype() 函式應用於所需的列並指定所需的資料型別,在本例中為“int”。

要使用 astype() 函式進行資料轉換,我們只需在 DataFrame 上呼叫此方法並指定要將列轉換為的資料型別即可。例如,以下程式碼演示瞭如何使用 astype() 函式將字串列“Age”轉換為整數列

示例

# Importing required libraries
import pandas as pd

# Creating sample DataFrame
df = pd.DataFrame({'Name': ['Prince', 'Mukul', 'Divyang', 'Rohit'],
                   'Age': ['25', '30', '35', '40'],
                   'Salary': ['50000', '60000', '70000', '80000']})

# Converting Age column to integer using astype() function
df['Age'] = df['Age'].astype(int)

# Output
print(df.dtypes)
print(df)

在上面的程式碼中,我們建立了一個名為“df”的示例 DataFrame。接下來,我們使用“astype()”函式將“Age”列轉換為整數。“astype()”函式用於更改資料框中列的資料型別。我們將“int”指定為函式的引數,以將列轉換為整數資料型別。更新後的 DataFrame 儲存回“df”變數中。

最後,我們使用“dtypes”屬性列印列的資料型別,並使用“print()”函式列印 DataFrame,以檢視對“Age”列所做的更改。

輸出

上面程式碼的輸出將類似於:

Name       object
Age         int32
Salary     object
dtype:     object

       Name  Age Salary
0    Prince   25  50000
1     Mukul   30  60000
2   Divyang   35  70000
3     Rohit   40  80000

從上面的輸出中我們可以看到,“Age”列已成功轉換為整數資料型別,在資料型別輸出中以“int32”值表示。DataFrame 現在有三個列——姓名、年齡和工資,其中“年齡”列包含整數而不是字串值。

需要注意的是,使用 astype() 函式時,字串值必須可轉換為整數;否則,將引發 ValueError。此外,如果列中存在任何非數字字元或缺失值,則此方法將無法按預期工作。

方法二:使用 to_numeric() 函式

Pandas 中的 to_numeric() 函式是將字串列轉換為整數資料型別的另一種有用方法。此函式允許我們將各種資料型別轉換為數值型別,包括字串。它在處理轉換錯誤方面提供了更大的靈活性,並提供其他引數來自定義轉換過程。

要使用 to_numeric() 函式,我們只需在要轉換的列上呼叫此函式並指定要轉換到的資料型別即可。例如,以下程式碼演示瞭如何使用 to_numeric() 函式將字串列“Age”轉換為整數列

示例

# Importing required libraries
import pandas as pd

# Creating sample DataFrame
df = pd.DataFrame({'Name': ['Prince', 'Mukul', 'Divyang', 'Rohit'],
                   'Age': ['25', '30', '35', '40'],
                   'Salary': ['50000', '60000', '70000', '80000']})

# Converting Age column to integer using to_numeric() function
df['Age'] = pd.to_numeric(df['Age'], errors='coerce', downcast='integer')

# Output
print(df.dtypes)
print(df)

在上面的程式碼中,我們使用 pd.to_numeric() 函式將 DataFrame 的“Age”列從字串轉換為整數。該函式將列作為引數,以及其他引數:errors='coerce' 和 downcast='integer'。errors='coerce' 引數確保任何不可轉換的值都轉換為 NaN(非數字)。downcast='integer' 引數透過儘可能將結果資料型別向下轉換為整數來最佳化記憶體使用。

上面程式碼的輸出將類似於:

輸出

Name      object
Age        Int8
Salary    object
dtype: object

     Name  Age Salary
0  Prince   25  50000
1   Mukul   30  60000
2 Divyang   35  70000
3   Rohit   40  80000

在上面的輸出中,我們可以看到“Age”列已轉換為 Int8 資料型別,表示範圍從 -128 到 127 的有符號整數。“Name”和“Salary”列保持為 object(字串)資料型別。

DataFrame 本身顯示了更新後的“Age”列,其中字串值已轉換為其對應的整數值。

因此,我們已經成功地使用 astype() 函式和 to_numeric() 函式在 Pandas DataFrame 中將字串轉換為整數。

結論

在本教程中,我們探討了在 Pandas DataFrame 中將字串資料轉換為整數資料的方法。astype() 函式和 to_numeric() 函式是將字串轉換為整數的兩種最常用的方法。當我們知道字串列僅包含整數時,astype() 方法很有用,而 to_numeric() 在處理轉換錯誤方面更靈活。我們為每種方法都提供了一個示例。使用 astype() 方法時,請確保字串值可轉換為整數;否則,它將引發 ValueError。同樣,當列中存在非數字字元或缺失值時,to_numeric() 函式也不適用。總的來說,要使用的方法取決於專案的具體要求。

更新於:2023年7月24日

7000+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告