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

使用df.at方法修改Pandas DataFrame单元格值遇语法错误求助

问题描述

我有一个Pandas DataFrame,想要修改行索引11、列名为K1L的单元格值。我先通过代码index_quadrupole = df[df['NAME']=="H01_EMQ_01"].index.values.astype(int)[0]获取目标行索引,再尝试用df.at[index_quadrupole, "K1L"]=4.0赋值时出现语法错误:执行print(df.at[11, "K1L"]=4.0)提示“SyntaxError: expression cannot contain assignment, perhaps you meant "=="?”。但执行print(df.at[11, "K1L"])能得到正确的单元格值,我希望修改该单元格的值而非进行判断,请问问题出在哪里?

解决方案

错误原因

你错误地将赋值操作df.at[11, "K1L"]=4.0作为参数传入print()函数中。Python语法不允许在表达式(比如print()的参数)里嵌入赋值语句,这才触发了语法错误。print()需要接收一个可计算的表达式,而赋值语句本身不属于这类表达式。

正确操作

  1. 单独执行赋值语句完成单元格修改:
    # 用获取到的索引
    df.at[index_quadrupole, "K1L"] = 4.0
    # 或者直接使用已知的行索引11
    df.at[11, "K1L"] = 4.0
    
  2. 若要验证修改结果,再单独调用print()输出值:
    print(df.at[11, "K1L"])
    

额外优化

你获取索引的代码可以简化,无需手动转换为int类型,直接取索引的第一个元素即可:

index_quadrupole = df[df['NAME']=="H01_EMQ_01"].index[0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:37:16