Pandas2.2 DataFrame
Conversion
方法 | 描述 |
---|---|
DataFrame.astype(dtype[, copy, errors]) | 用于將 DataFrame 中的數據轉換為指定的數據類型 |
pandas.DataFrame.astype
pandas.DataFrame.astype
是一個方法,用于將 DataFrame 中的數據轉換為指定的數據類型。這個方法非常有用,特別是在需要將數據從一種類型轉換為另一種類型時,例如將字符串轉換為整數或浮點數。
方法簽名
DataFrame.astype(dtype, copy=True, errors='raise')
參數說明
dtype
: 字符串、數據類型或字典,表示要轉換的數據類型。可以是單個數據類型(應用于所有列),也可以是字典(指定每列的數據類型)。copy
: 布爾值,默認為True
,表示是否返回一個新的 DataFrame 而不是修改原 DataFrame。errors
: 字符串,默認為'raise'
,表示在轉換過程中遇到錯誤時的行為。可以是'raise'
(引發錯誤)或'ignore'
(忽略錯誤)。
返回值
- 返回一個新的 DataFrame,其中數據類型已轉換。
示例
假設有一個 DataFrame 如下:
import pandas as pddata = {'A': ['1', '2', '3'],'B': ['1.1', '2.2', '3.3'],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)
輸出:
原始 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A object
B object
C object
dtype: object
示例1:將所有列轉換為整數類型
try:df_int = df.astype(int)
except ValueError as e:print("錯誤信息:", e)
結果:
錯誤信息: invalid literal for int() with base 10: '1.1'
示例2:將指定列轉換為整數類型
df['A'] = df['A'].astype(int)
print("轉換后的 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)
結果:
轉換后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B object
C object
dtype: object
示例3:將指定列轉換為不同的數據類型
df_converted = df.astype({'A': int, 'B': float, 'C': 'category'})
print("轉換后的 DataFrame:")
print(df_converted)
print("\n數據類型:")
print(df_converted.dtypes)
結果:
轉換后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C category
dtype: object
示例4:使用 copy=False
修改原 DataFrame
df.astype({'A': int, 'B': float, 'C': 'category'}, copy=False)
print("修改后的 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)
結果:
修改后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C category
dtype: object
示例5:使用 errors='ignore'
忽略轉換錯誤
df_ignored_errors = df.astype({'A': int, 'B': float, 'C': int}, errors='ignore')
print("忽略錯誤后的 DataFrame:")
print(df_ignored_errors)
print("\n數據類型:")
print(df_ignored_errors.dtypes)
結果:
忽略錯誤后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B object
C object
dtype: object
通過這些示例,可以看到 pandas.DataFrame.astype
方法如何將 DataFrame 中的數據轉換為指定的數據類型。這些方法在數據預處理和類型轉換時非常有用。
注意事項
astype
方法可以將 DataFrame 中的數據轉換為指定的數據類型。- 可以使用單個數據類型(應用于所有列),也可以使用字典(指定每列的數據類型)。
- 設置
copy=True
返回一個新的 DataFrame,而不會修改原 DataFrame。 - 設置
copy=False
直接修改原 DataFrame。 - 設置
errors='raise'
在轉換過程中遇到錯誤時會引發錯誤。 - 設置
errors='ignore'
在轉換過程中遇到錯誤時會忽略錯誤。
示例代碼及驗證
為了驗證 pandas.DataFrame.astype
方法的效果,可以運行上述示例代碼并查看輸出結果。
import pandas as pd# 創建一個示例 DataFrame
data = {'A': ['1', '2', '3'],'B': ['1.1', '2.2', '3.3'],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)# 嘗試將所有列轉換為整數類型
try:df_int = df.astype(int)
except ValueError as e:print("錯誤信息:", e)# 將指定列轉換為整數類型
df['A'] = df['A'].astype(int)
print("\n轉換后的 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)# 將指定列轉換為不同的數據類型
df_converted = df.astype({'A': int, 'B': float, 'C': 'category'})
print("\n轉換后的 DataFrame:")
print(df_converted)
print("\n數據類型:")
print(df_converted.dtypes)# 使用 copy=False 修改原 DataFrame
df.astype({'A': int, 'B': float, 'C': 'category'}, copy=False)
print("\n修改后的 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)# 使用 errors='ignore' 忽略轉換錯誤
df_ignored_errors = df.astype({'A': int, 'B': float, 'C': int}, errors='ignore')
print("\n忽略錯誤后的 DataFrame:")
print(df_ignored_errors)
print("\n數據類型:")
print(df_ignored_errors.dtypes)
運行結果
運行上述代碼后,你會看到以下輸出:
原始 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A object
B object
C object
dtype: object
錯誤信息: invalid literal for int() with base 10: '1.1'轉換后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B object
C object
dtype: object轉換后的 DataFrame:A B C
0 1.0 1.1 NaN
1 2.0 2.2 NaN
2 3.0 3.3 NaN數據類型:
A float64
B float64
C float64
dtype: object轉換后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C category
dtype: object修改后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B float64
C category
dtype: object忽略錯誤后的 DataFrame:A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z數據類型:
A int64
B object
C object
dtype: object
通過這些示例,可以看到 pandas.DataFrame.astype
方法如何將 DataFrame 中的數據轉換為指定的數據類型。這些方法在數據預處理和類型轉換時非常有用。