You need to enable JavaScript to run this app. Pandas DataFrame 除列a外如何将带%的object列转为浮点小数
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame 除列a外如何将带%的object列转为浮点小数

pandas百分比列转小数的正确实现
  • 先明确原写法的两处核心偏差:
    1. 操作对象错误:df.columns 指向的是DataFrame的列名集合,并非列内存储的实际单元格数值,按这个逻辑写代码本质是在修改列名,根本碰不到b/c/d列里的百分比内容,完全达不到转换数值的目的。
    2. 缺少列筛选逻辑:没有指定需要处理的列范围,一旦把转换规则应用到全表,a列存储的文本内容(ana/bob/cal/dan)根本无法转成float类型,会直接触发类型转换报错。
  • 核心解决思路:把a列排除在操作集合外,只针对b、c、d三个目标列执行转换流程
    完整转换逻辑是:去掉每个单元格值末尾的%符号 → 把剩下的数值字符串转成float类型 → 除以100得到对应的标准小数结果
  • 可直接运行的代码示例:
# 明确指定要转换的列,直接排除a列
convert_cols = ['b', 'c', 'd']
# 批量完成转换操作
df[convert_cols] = df[convert_cols].apply(
    lambda s: s.str.rstrip('%').astype('float') / 100.0
)
  • 等效简化写法,不需要额外写apply逻辑:
df[['b', 'c', 'd']] = df[['b', 'c', 'd']].replace('%', '', regex=True).astype(float) / 100

执行完上述代码后,a列的文本值会完全保留不做改动,b/c/d列的百分比值会统一转成对应小数,比如31%会变成0.31、9%会变成0.09。


内容的提问来源于stack exchange,提问作者kwispychickyjoy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 22:24:03