无法用strip/replace移除size_sq.ft列逗号,求转为数值类型的解决方法
Kaggle数据集size_sq.ft列逗号移除与数值转换方案
为什么str.strip(",")没用?
str.strip()只会移除字符串首尾的指定字符,而你数据里的逗号肯定是在数字中间(比如1,200这种格式),所以这个方法根本碰不到中间的逗号,自然没效果也不会报错。
正确处理步骤
全局替换逗号:用
str.replace()把列里所有逗号清空,这才是处理中间逗号的正确方式:df['size_sq.ft'] = df['size_sq.ft'].str.replace(',', '', regex=False)加
regex=False是为了避免把逗号当成正则表达式字符,运行更快更稳妥。清理异常值:转换前先检查有没有非数字内容(比如空值、特殊符号),避免转换失败:
# 找出所有无法转成数字的行 bad_rows = df[~df['size_sq.ft'].str.match(r'^\d+(\.\d+)?$', na=False)] print(bad_rows)遇到异常值可以选择删除、填充或手动修正,比如用中位数填充空值:
df['size_sq.ft'] = df['size_sq.ft'].fillna(df['size_sq.ft'].median())转换为数值类型:两种常用方法:
- 直接转类型(适合无异常值的情况):
# 转整数 df['size_sq.ft'] = df['size_sq.ft'].astype(int) # 或转浮点数 df['size_sq.ft'] = df['size_sq.ft'].astype(float) - 用
pd.to_numeric()自动处理异常(把无法转换的内容转成NaN):df['size_sq.ft'] = pd.to_numeric(df['size_sq.ft'], errors='coerce')
- 直接转类型(适合无异常值的情况):
完整可运行代码
# 1. 移除所有逗号 df['size_sq.ft'] = df['size_sq.ft'].str.replace(',', '', regex=False) # 2. 转换为数值,异常值转NaN df['size_sq.ft'] = pd.to_numeric(df['size_sq.ft'], errors='coerce') # 3. 可选:填充NaN值(用中位数更稳健) df['size_sq.ft'] = df['size_sq.ft'].fillna(df['size_sq.ft'].median()) # 4. 转整数(如果不需要小数精度) df['size_sq.ft'] = df['size_sq.ft'].astype(int)
内容的提问来源于stack exchange,提问作者Md. Arian Rahman
相关产品推荐
相关产品推荐

