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

处理DataFrame中含多样数值单位的列转换问题

解决DataFrame去除百分号的AttributeError问题及格式转换方案

错误原因

你遇到的AttributeError: 'str' object has no attribute 'str',本质是误用了Pandas的Series方法:.str是专为Series对象设计的字符串处理接口,但apply会把DataFrame列的单个元素(这里是字符串)传入自定义函数,直接对字符串操作即可,不需要再加.str。

完整解决方案

1. 读取目标文件

import pandas as pd
df = pd.read_csv('ForEx.csv')

2. 编写适配单个元素的转换函数

针对actual列的混合格式(含百分号、纯数值等),写一个能统一转换为数值格式的函数:

def format_actual_value(val):
    # 统一转为字符串处理,兼容列内混合类型
    val_str = str(val).strip()
    # 处理带百分号的情况:去除百分号后转浮点数,再除以100转为小数
    if '%' in val_str:
        try:
            return float(val_str.replace('%', '')) / 100
        except ValueError:
            return pd.NA
    # 处理纯数值或其他可转换格式
    else:
        try:
            return float(val_str)
        except ValueError:
            return pd.NA

3. 生成转换后的CNactual列

用apply将函数作用到actual列的每个元素:

df['CNactual'] = df['actual'].apply(format_actual_value)

扩展说明

  • 如果actual列还有其他格式(比如带千分位逗号、货币符号),可以在函数里添加对应替换逻辑,比如val_str.replace(',', '')
  • 返回pd.NA是为了标记无效值,方便后续用df.dropna()或df.fillna()处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:02:06