一周学会Pandas2 Python数据处理与分析-Pandas2数据类型转换操作
锋哥原创的Pandas2 Python数据处理与分析 视频教程:
2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
Pandas 提供了灵活的方法来处理数据类型转换,以下是常见操作及代码示例:
1. 查看数据类型
import pandas as pddf = pd.DataFrame({'A': ['1', '2', '3'],'B': [4, 5, 6],'C': ['2025-01-01', '2025-02-01', '2025-03-01']
})print(df.dtypes)
# 输出:
# A object
# B int64
# C object
2. 使用 astype() 转换类型
基本转换:
df['A'] = df['A'].astype(int) # 转换为整数
df['B'] = df['B'].astype(float) # 转换为浮点数
运行结果:
3. 使用 pd.to_numeric() 处理数值转换
to_numeric()方法详解:
pandas.to_numeric(arg, errors='raise', downcast=None
)
参数说明:
参数 | 类型 | 说明 |
---|---|---|
arg | Series, list, 1D数组 | 需要转换的输入数据 |
errors | {'ignore', 'raise', 'coerce'}, 默认 'raise' | 控制无效值的处理方式: - 'raise' : 遇到非数值字符报错(默认) - 'coerce' : 将无效值转为 NaN - 'ignore' : 保留原值,不转换 |
downcast | {'integer', 'signed', 'unsigned', 'float'}, 默认 None | 降低内存占用: - 'integer' /'signed' /'unsigned' : 寻找最小整数类型(如 int8 , int16 ) - 'float' : 寻找最小浮点类型(如 float32 ) |
使用 errors='coerce'
避免转换失败导致程序中断。
import pandas as pd
s = pd.Series(['1', '2', 'apple', '4'])
s_numeric = pd.to_numeric(s, errors='coerce') # 无效值转为 NaN
# 输出: [1.0, 2.0, NaN, 4.0]s_ignore = pd.to_numeric(s, errors='ignore') # 保留原数据
to_numeric函数中的downcast参数用于控制数值类型的转换,可以减少内存使用量,同时保持数据的准确性。
import pandas as pds = pd.Series([1.0, 2.0, 3.0])
s = pd.to_numeric(s, downcast='integer') # 转换为最小整数类型 (int8/int16/...)
4. 日期时间转换to_datetime()
import pandas as pddf = pd.DataFrame({'A': ['1', '2', '3'],'B': [4, 5, 6],'C': ['2025-01-01', '2025-02-01', 'ccc']
})
df['C'] = pd.to_datetime(df['C'],errors='coerce') # 转换为 datetime 类型
5. 处理缺失值与类型推断
填充缺失值后转换:
import pandas as pddf = pd.DataFrame({'A': ['1', '2', '3'],'B': [4, 5, 6],'C': ['2025-01-01', '2025-02-01', 'ccc']
})
df['D'] = ['10', None, '30']
df['D'] = df['D'].fillna(0).astype(int) # 填充 NaN 后转为整数
Pandas可以用以下方法智能地推断各列的数据类型,会返回一个按推断修改后的DataFrame。
import pandas as pddf = pd.DataFrame({'A': ['1', '2', '3'],'B': [4, 5, 6]
})
df = df.convert_dtypes() # 自动推断更合适的数据类型