使用Pandas替换CSV文件中的值无效问题求助
问题原因与解决方法
你的代码修改了DataFrame里的数据,但根本没把修改后的内容写回CSV文件,所以磁盘上的文件自然不会有变化。另外还有两个小问题需要注意:
- 你用
csv.reader遍历找索引,再用pandas读文件,两者的索引可能不匹配(比如CSV有表头的话,csv.reader会把表头算成第一行,而pandas默认把表头排除在数据行之外,index-1的逻辑容易出错) - 如果没找到匹配的用户,变量
i会未定义,执行时会报错
修正后的代码
import pandas as pd def test2(fname, lname, amount): # 直接用pandas读取CSV,避免索引不一致 df = pd.read_csv('clients.csv') # 找到匹配用户的行索引 # 这里用精确匹配,如果你需要模糊匹配可以把==改成in mask = (df.iloc[:, 0] == fname) & (df.iloc[:, 1] == lname) matching_indices = df[mask].index if not matching_indices.empty: # 取第一个匹配的行索引 i = matching_indices[0] df.iat[i, 6] = amount # 关键:把修改后的DataFrame写回CSV # 如果CSV有表头,index=False不要写索引列 df.to_csv('clients.csv', index=False) else: print(f"未找到用户 {fname} {lname}")
关键说明
- 用pandas自身的条件筛选找索引,比单独用
csv.reader更可靠,避免索引错位 - 必须调用
df.to_csv()才能把内存里修改后的DataFrame保存到磁盘文件 - 增加了未找到用户的判断,防止出现
NameError
内容的提问来源于stack exchange,提问作者yay
相关产品推荐
相关产品推荐

