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

如何在Python DataFrame中批量去除多列特殊字符?iloc多列处理失效求助

解决DataFrame多列去除特殊字符失效的问题

问题核心原因

用df.iloc[:,1:10].str.strip('%')处理多列失效,主要有两个关键因素:

  • 目标列数据类型非字符串/object类型:str.strip()仅对字符串类型生效,若列是数值型,直接调用会返回NaN,赋值后看起来无变化。
  • 链式赋值的潜在风险:df.iloc[:,1:10] = df.iloc[:,1:10].str.strip('%')属于链式索引操作,可能触发pandas的SettingWithCopyWarning,导致修改未同步到原DataFrame。

针对性解决方案

1. 先确认并转换列类型

先检查目标列的数据类型:

print(df.iloc[:,1:10].dtypes)

如果是数值型,先转字符串处理,再按需转回数值类型:

# 转换为字符串→去除%→转回浮点型(可根据需求调整为int等类型)
df.iloc[:,1:10] = df.iloc[:,1:10].astype(str).str.strip('%').astype(float)

2. 用applymap处理混合类型列

如果列中混合了字符串和数值,用applymap做类型判断,避免数值被转成NaN:

df.iloc[:,1:10] = df.iloc[:,1:10].applymap(lambda x: x.strip('%') if isinstance(x, str) else x)

3. 避免链式赋值,直接用列名索引

先提取目标列名,再直接赋值,操作更稳妥:

target_cols = df.columns[1:10]
df[target_cols] = df[target_cols].str.strip('%')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:25:27