pandas中将含小数的字符串列转成带前缀整数字符串的简洁方法
pandas带.0后缀字符串列格式转换方案
报错原因
你直接调用astype(int)转换失败,核心原因是pandas无法直接将带小数点的字符串(如"1.0")解析为整数类型,必须先通过float类型中转:float支持解析带小数点的字符串格式,再转int就可以正常去掉末尾的.0部分。
另外注意你原示例中DataFrame的列名是首字母大写的Pre,调用时要注意大小写匹配,避免触发KeyError。
简洁实现方案
根据你的数据场景可以选择不同的实现:
- 场景1:确认列中所有值都是
x.0格式的字符串,无需处理非整数小数
推荐直接用字符串操作实现,不需要转换数值类型,性能更高:import pandas as pd df = pd.DataFrame([['1.0'],['52.0']],columns=['Pre']) # 方法1:按.分割取第一部分 df["pre"] = "PRE_" + df["Pre"].str.split(".").str[0] # 方法2:正则替换掉末尾的.0后缀 df["pre"] = "PRE_" + df["Pre"].str.replace(r"\.0$", "", regex=True) - 场景2:列中可能存在非整数的小数字符串(如
"3.7"),需要按规则取整
你测试的数值转换写法本身已经很简洁,也可以根据需求调整取整逻辑:# 直接截断小数部分 df["pre"] = "PRE_" + df["Pre"].astype(float).astype(int).astype(str) # 如果需要四舍五入取整,新增round方法即可 df["pre"] = "PRE_" + df["Pre"].astype(float).round().astype(int).astype(str)
内容的提问来源于stack exchange,提问作者CustardBun
相关产品推荐
相关产品推荐

