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

如何按pandas DataFrame每行指定长度截取字符串并避免SettingWithCopyWarning

警告触发原因

SettingWithCopyWarning是pandas的安全校验提示:你当前用逐行索引赋值的方式操作时,pandas无法确认你用到的df是原始对象还是从其他数据切片生成的副本,直接赋值可能不会作用到原始数据上,因此抛出该警告。

解决方案

方案1:向量化操作(优先推荐)

用pandas内置的apply方法按行处理,完全规避循环赋值的问题,执行效率远高于手动遍历,代码也更简洁:

df['String'] = df.apply(lambda row: row['String'][row['length']:], axis=1)

如果你的列名是小写string,对应修改代码里的列名即可。

方案2:显式声明副本

如果要保留原有循环逻辑,只需要在操作前显式拷贝DataFrame,明确告知pandas你要修改的就是当前这个对象:

# 先做显式拷贝
df = df.copy()

# 再运行原有代码即可
for i in range(len(df.index)):
    val = df['string'].iloc[i]
    n = df['length'].iloc[i]
    df['string'].iloc[i] = val[n:]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:57:03