爱吃肥肉的马 发表于 2023-8-24 11:04:44

关于pandas修改数据的问题

stu = pandas.read_excel(filename)#读取excel文件
modifyId = queryById()#通过id查询到对应的行
    if modifyId:
      stuName,stuSex,stuAge,chinese,maths,english = input_sut()
      stu.loc,'姓名'] = stuName
      stu.loc,'性别'] = stuSex
      stu.loc,'年龄'] = stuAge
      stu.loc,'语文'] = chinese
      stu.loc,'数学'] = maths
      stu.loc,'英语'] = english
      #print(modifyId)
      stu.to_excel(filename,index=False)
      print('修改成功!')

为什么我运行后,表里的原值没有修改,反而新插入了一行啊?

isdkz 发表于 2023-8-24 11:05:06

这个问题可能是由于在将修改后的数据写入Excel文件时没有覆盖原有数据导致的。在使用 to_excel 函数时,如果没有指定 mode 参数,默认的行为是将数据写入到一个新的Excel文件中,而不是覆盖原有的文件。

为了解决这个问题,你可以在调用 to_excel 函数时指定 mode 参数为 'a' ,表示以追加模式写入数据。这样就能够将修改后的数据追加到原有的文件中,而不是创建一个新的文件。

修改后的代码如下:

stu.to_excel(filename, index=False, mode='a')


这样运行后,就能够将修改后的数据覆盖原有数据,而不会插入新的行了。

陶远航 发表于 2023-8-24 11:05:24

根据你提供的代码,问题可能出在以下几个方面:

1. queryById() 函数返回的 modifyId 是一个列表。在你的代码中,你使用了 modifyId 来访问查询到的行的索引值。如果 modifyId 返回的是多个匹配行的索引列表,那么你需要注意选择正确的索引值来修改对应的行。可以通过打印 modifyId 的值来确认是否返回了正确的索引。

2. 在使用 loc 函数修改 DataFrame 中的数据时,确保你正在使用正确的列名。在你的代码中,你使用了 '姓名'、'性别'、'年龄'、'语文'、'数学'、'英语' 作为列名来进行修改。请确保这些列名与 DataFrame 的列名完全一致,包括大小写和空格等。

3. 检查输入的修改数据是否正确赋值给了相应的变量 stuName、stuSex、stuAge、chinese、maths、english。确保这些变量包含了你要修改的新值。

4. 最后,请确保 filename 参数指定的 Excel 文件路径是正确的,并且你有写入该文件的权限。

综上所述,请检查以上几个方面,修正可能存在的问题。如果问题仍然存在,请提供更多代码和示例数据,以便更好地理解问题并给出更具体的解决方案。
如果问题已经解决,请设置最佳答案

爱吃肥肉的马 发表于 2023-8-24 11:30:19

本帖最后由 爱吃肥肉的马 于 2023-8-24 11:32 编辑

陶远航 发表于 2023-8-24 11:05
根据你提供的代码,问题可能出在以下几个方面:

1. queryById() 函数返回的 modifyId 是一个列表。在你 ...

我截了个运行结果的图,在前后都加了个打印stu;
修改后,对应的1002那行的值没变,反而在stu中新加了一行数据,是我修改方法用错了吗?

爱吃肥肉的马 发表于 2023-8-24 11:41:26

isdkz 发表于 2023-8-24 11:05
这个问题可能是由于在将修改后的数据写入Excel文件时没有覆盖原有数据导致的。在使用 to_excel 函数时,如 ...

我前后都打印了一下stu这个二维表,看出来不是写入excel时出的问题,应该是改值得时候就出错了,但我不晓得哪错了·······

isdkz 发表于 2023-8-24 11:45:53

爱吃肥肉的马 发表于 2023-8-24 11:41
我前后都打印了一下stu这个二维表,看出来不是写入excel时出的问题,应该是改值得时候就出错了,但我不晓 ...

可能获取到的modifyId不对

琅琊王朝 发表于 2023-8-25 15:46:04

根据你提供的代码,出现原值没有修改而新插入一行的问题可能是因为 `modifyId` 的值不正确或者在修改特定行时出现了错误。

以下是一些可能导致问题的原因和建议的解决方法:

1. 检查 `queryById()` 函数:确保 `queryById()` 函数能够正确返回要修改的行的索引(modifyId)。你可以在打印语句 `print(modifyId)` 后进行检查,确认该索引的值是否正确。

2. 检查输入数据:确保输入的学生信息 (`stuName, stuSex, stuAge, chinese, maths, english`) 是有效的,并且不为空。如果其中任何一个输入为空或无效,可能导致在修改时出现问题。

3. 检查文件的正确读取和写入:确保 `pandas.read_excel()` 方法成功地读取了 Excel 文件,并且 `to_excel()` 方法正确地将修改后的 DataFrame 写回到文件中。可以使用打印语句来检查读取和写入操作是否正常。

另外,请确保以上代码段中的缩进正确,以免出现语法错误。

如果仍然无法解决问题,请提供更多关于 `queryById()` 函数和相关输入数据的详细信息,以便更准确地诊断问题所在。

希望这些建议对你有所帮助!如果还有其他问题,请随时提问。
此内容为ChatGPT回答,如果胡说八道,请不要理会
如果对你有帮助,请设置一个最佳答案!
页: [1]
查看完整版本: 关于pandas修改数据的问题