如何在pandas数据框列中将Unicode字符u"\u00BD"替换为小数字符串
解决Pandas中带½的房间数字符串转换问题
嘿,这个问题我之前处理过,搞定它其实很轻松!下面给你几个实用的方案,按需选择就行:
方案1:直接替换目标Unicode字符
最直接的方式就是用Pandas的str.replace()方法,精准定位那个½的Unicode字符,把它替换成.5。代码示例如下:
import pandas as pd # 假设你的数据框是df,存储房间数的列叫room_count df['room_count'] = df['room_count'].str.replace(u"\u00BD", ".5")
运行之后,所有像“2½”“3½”的字符串就会变成“2.5”“3.5”啦。
方案2:替换后转成数值类型(推荐用于后续计算)
如果之后你需要对房间数做统计分析(比如求均值、总和),可以把替换后的字符串转成float类型,方便后续操作:
df['room_count'] = df['room_count'].str.replace(u"\u00BD", ".5").astype(float)
这样列就从字符串型变成数值型,后续的数值计算就顺畅多了。
方案3:批量处理多种分数字符(扩展场景)
要是之后还遇到其他类似的分数Unicode字符(比如¼、¾),可以用字典映射的方式一次性替换所有目标字符,扩展性更强:
# 定义分数字符到小数的映射字典 fraction_map = { u"\u00BD": ".5", u"\u00BC": ".25", u"\u00BE": ".75" } # 用replace方法批量替换,记得开启regex=True df['room_count'] = df['room_count'].replace(fraction_map, regex=True)
小提醒:如果你的列里存在空值或者非标准格式的内容,建议先做简单清洗,比如用df['room_count'].fillna("0")处理空值,或者用str.contains()筛选出异常值提前处理,避免转换过程中报错。
内容的提问来源于stack exchange,提问作者DGrannas
相关产品推荐
相关产品推荐

