You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:15:04