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

Pandas中避免「在DataFrame切片副本上赋值」错误的方法

Pandas赋值错误的解决方法

原始代码与错误

运行以下代码时触发警告:

df = pd.readexcel(excel_name)
groupColumn = df('Group') # Excel中有一列名为Group
for row in range(1, len(df)):
   if "unused" in groupColumn[row]:
   groupColumn[row] = "input logic unused"

错误提示:

尝试在DataFrame切片的副本上设置值(A value is trying to be set on a copy of a slice from a DataFrame)

实际代码中包含赋值语句:groupColumn[row] = "input logic unused" + str(unusedPinsCount),需解决该警告问题。

解决方法

方法一:用Pandas矢量化操作(推荐)

Pandas的优势在于矢量化运算,比循环高效且彻底避免视图/副本问题,直接操作原DataFrame:

import pandas as pd

df = pd.read_excel(excel_name)
# 定位包含"unused"的行,直接修改Group列
df.loc[df['Group'].str.contains('unused'), 'Group'] = "input logic unused" + str(unusedPinsCount)

方法二:若需保留循环,明确创建副本

如果一定要用循环,先通过.copy()获取列的独立副本,修改完成后再赋值回原DataFrame:

import pandas as pd

df = pd.read_excel(excel_name)
# 明确创建列的副本,避免视图关联问题
groupColumn = df['Group'].copy()
for row in range(len(df)):
    # 转字符串避免非字符串类型报错
    if "unused" in str(groupColumn[row]):
        groupColumn[row] = "input logic unused" + str(unusedPinsCount)
# 将修改后的列放回原DataFrame
df['Group'] = groupColumn

原代码的两处基础修正

  1. pd.readexcel → pd.read_excel:这是Pandas读取Excel文件的正确函数名
  2. df('Group') → df['Group']:获取DataFrame列的正确方式是使用方括号而非圆括号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:52:10