将Pandas中price列转换为整数时出错,请求技术协助
Pandas price列转整数错误的解决方案
常见问题及处理代码
1. 列含非数值符号(如$、逗号)
如果price是带格式的字符串,先清理再转换:
# 移除货币符号和千分位逗号 df['price'] = df['price'].replace(r'[\$,]', '', regex=True) # 先转float再转int(处理小数转整数) df['price'] = df['price'].astype(float).astype(int)
2. 列存在NaN值
Pandas原生int类型不支持NaN,两种处理方式:
# 方式1:用支持NaN的Nullable Integer类型 df['price'] = df['price'].astype(float).astype('Int64') # 方式2:填充NaN为默认值(比如0)后转int df['price'] = df['price'].fillna(0).astype(float).astype(int)
3. float列转int时因小数报错
先处理小数部分再转换:
# 四舍五入后转int df['price'] = df['price'].round().astype(int) # 或直接取整数部分(截断小数) df['price'] = df['price'].astype(int, errors='ignore')
4. 排查异常数据
先定位问题行再处理:
import pandas as pd # 查看列数据类型 print(df['price'].dtype) # 筛选出无法转为数值的行 invalid_rows = df[pd.to_numeric(df['price'], errors='coerce').isna()] print(invalid_rows)
内容的提问来源于stack exchange,提问作者HMB
相关产品推荐
相关产品推荐

