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

如何将DataFrame中Percentage列的百分比值转换为小数?

将DataFrame百分比列转换为小数的最优方法

核心方案(矢量化操作,性能最优)

对于格式为#%的百分比列,最高效且简洁的处理方式是利用pandas的矢量化字符串操作,避免逐行循环或apply(这类方法在大数据集下性能极差)。

方法1:基础转换(适用于格式规范的列)

df['Percentage'] = df['Percentage'].str.replace('%', '', regex=False).astype(float) / 100
  • 步骤说明:
    1. str.replace('%', '', regex=False):快速移除所有百分号,regex=False关闭正则匹配,提升处理速度
    2. astype(float):将字符串转换为浮点型数值
    3. / 100:将百分比数值转换为对应的小数

方法2:稳健转换(兼容缺失值/异常值)

如果列中存在缺失值或非标准格式的内容,推荐使用pd.to_numeric增强容错性:

df['Percentage'] = pd.to_numeric(df['Percentage'].str.replace('%', '', regex=False), errors='coerce') / 100
  • errors='coerce'会将无法转换的无效值(如非数字字符串)转为NaN,避免程序报错中断

示例演示

import pandas as pd

# 构造测试数据
data = {'Percentage': ['80%', '42%', '100%', '5.5%', None, 'invalid']}
df = pd.DataFrame(data)

# 执行转换
df['Percentage'] = pd.to_numeric(df['Percentage'].str.replace('%', '', regex=False), errors='coerce') / 100

# 输出结果
print(df)

输出:

Percentage
0        0.800
1        0.420
2        1.000
3        0.055
4         NaN
5         NaN

性能说明

上述两种方法均为pandas原生矢量化操作,处理100万行级别的数据集时,速度比apply快10~100倍,是处理此类场景的最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:35:19