在Python中,astype() 是Pandas和NumPy中用于轉(zhuǎn)換數(shù)據(jù)類型的關(guān)鍵方法,尤其在數(shù)據(jù)處理和分析中頻繁使用。astype() 適用于DataFrame、Series或NumPy數(shù)組。通過指定目標(biāo)類型,可強制轉(zhuǎn)換數(shù)據(jù)格式。此方法常用于數(shù)據(jù)清洗,如統(tǒng)一列類型或優(yōu)化內(nèi)存。
python函數(shù)中astype的使用方法?
一、基本語法
python1# Pandas DataFrame/Series
2df.astype(dtype, copy=True, errors='raise')
3
4# NumPy數(shù)組
5arr.astype(dtype, copy=True, order='K', casting='unsafe', subok=True)
dtype: 目標(biāo)數(shù)據(jù)類型(如 int, float, str, 'category', 'datetime64' 等)。
copy: 是否返回副本(默認(rèn)為 True)。
errors: 錯誤處理('raise' 報錯,'ignore' 靜默忽略)。

二、常見使用場景
1. 轉(zhuǎn)換數(shù)值類型
python1import pandas as pd
2
3df = pd.DataFrame({'A': ['1', '2', '3'], 'B': ['4.5', '5.6', '6.7']})
4
5# 字符串轉(zhuǎn)整數(shù)
6df['A'] = df['A'].astype(int)
7
8# 字符串轉(zhuǎn)浮點數(shù)
9df['B'] = df['B'].astype(float)
2. 轉(zhuǎn)換分類數(shù)據(jù)(節(jié)省內(nèi)存)
python1df['category'] = df['category'].astype('category')
3. 轉(zhuǎn)換日期時間
python1df['date'] = pd.to_datetime(df['date_str']).astype('datetime64[ns]')
4. 批量轉(zhuǎn)換多列
python1df = df.astype({'col1': 'float32', 'col2': 'int8'})
5. NumPy數(shù)組類型轉(zhuǎn)換
python1import numpy as np
2arr = np.array([1, 2, 3])
3arr_float = arr.astype(np.float64)
三、注意事項
錯誤處理
若數(shù)據(jù)無法轉(zhuǎn)換(如字符串 'abc' 轉(zhuǎn) int),默認(rèn)會報錯??赏ㄟ^ errors='ignore' 跳過錯誤:
python1df['A'] = df['A'].astype(int, errors='ignore') # 無法轉(zhuǎn)換的保持原樣
內(nèi)存優(yōu)化
使用低精度類型可減少內(nèi)存占用:
python1df['large_data'] = df['large_data'].astype('float32')
避免鏈?zhǔn)讲僮?/p>
astype() 返回新對象,直接修改需賦值回原變量:
python1df = df.astype({'col': 'int'}) # 正確
2df.astype({'col': 'int'}) # 無效(未保存結(jié)果)
四、完整示例
python1import pandas as pd
2
3data = {'ID': ['101', '102', '103'], 'Score': ['95.5', '88.0', '72.3']}
4df = pd.DataFrame(data)
5
6# 轉(zhuǎn)換數(shù)據(jù)類型
7df['ID'] = df['ID'].astype(int)
8df['Score'] = df['Score'].astype(float)
9
10# 檢查類型
11print(df.dtypes)
輸出:
1ID int64
2Score float64
3dtype: object
總結(jié)
用途:astype() 用于顯式轉(zhuǎn)換數(shù)據(jù)類型,適用于數(shù)據(jù)清洗、內(nèi)存優(yōu)化或滿足特定分析需求。
關(guān)鍵點:明確目標(biāo)類型、處理潛在錯誤、注意賦值操作。
擴展:結(jié)合 pd.to_numeric() 或 pd.to_datetime() 可處理更復(fù)雜的轉(zhuǎn)換場景。
使用astype()時需注意轉(zhuǎn)換失敗會報錯,可通過errors='ignore'跳過;批量轉(zhuǎn)換可用字典指定多列類型。在NumPy中,astype()還支持子類處理和內(nèi)存順序控制。結(jié)合pd.to_datetime()可更安全地處理日期轉(zhuǎn)換,避免直接astype的潛在問題。