如何用Python Pandas不依赖索引修改CSV文件指定行的值?
问题排查与修复方案
原代码存在的核心问题
- 匹配条件错误:更新行时用
df['USERNAME'] == result,但result是取出的CARD_BALANCE数值,不是目标用户名,完全无法匹配到正确行 - 无容错处理:如果
login.user_name不存在于CSV的USERNAME列中,result['CARD_BALANCE'].values[0]会直接抛出索引越界异常 - 缩进不规范:代码块缩进不一致,会触发Python语法错误
修复后的代码
import pandas as pd df = pd.read_csv("dataframe.csv") # 定位目标用户的行 target_rows = df[df['USERNAME'] == login.user_name] # 先判断是否存在该用户 if not target_rows.empty: current_balance = target_rows['CARD_BALANCE'].values[0] if current_balance >= 20: new_balance = current_balance + 100 # 用正确的用户名匹配更新行 df.loc[df['USERNAME'] == login.user_name, "CARD_BALANCE"] = new_balance df.to_csv('dataframe.csv', index=False) else: print(f"用户 {login.user_name} 不存在")
关键修改说明
- 新增用户存在性判断:通过
target_rows.empty检查是否找到目标用户,避免索引越界错误 - 修正行匹配条件:更新时用
login.user_name匹配USERNAME列,确保定位到正确的行 - 规范变量命名:将
a改为new_balance,result改为current_balance,提升代码可读性 - 统一缩进格式:修正原代码的缩进混乱问题,符合Python语法规范
内容的提问来源于stack exchange,提问作者Kanishka.R
相关产品推荐
相关产品推荐

