使用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()需要接收一个可计算的表达式,而赋值语句本身不属于这类表达式。
正确操作
- 单独执行赋值语句完成单元格修改:
# 用获取到的索引 df.at[index_quadrupole, "K1L"] = 4.0 # 或者直接使用已知的行索引11 df.at[11, "K1L"] = 4.0 - 若要验证修改结果,再单独调用
print()输出值:print(df.at[11, "K1L"])
额外优化
你获取索引的代码可以简化,无需手动转换为int类型,直接取索引的第一个元素即可:
index_quadrupole = df[df['NAME']=="H01_EMQ_01"].index[0]
内容的提问来源于stack exchange,提问作者pickle_pum
相关产品推荐
相关产品推荐

