redaiconglin 发表于 2022-6-9 20:47:28

各位老师pandas在for循环下为何只能保存最后一条数据

我的代码是这样的
import pandas as pd,numpy as np
for i in range(10):
    writer = pd.ExcelWriter('abc.xlsx', mode='w')
    df = pd.DataFrame(np.random.randint(0,12,size=(3,4)))
    df.to_excel(writer,sheet_name='a')
    writer.save()
每次保存只能保存最后一次循环的3行数据,这种情况下能否保存所有10次循环的数据。谢谢老师帮我看看谢谢了

hrpzcf 发表于 2022-6-9 20:53:00

你不觉得每次都以写模式打开相同的xlsx文件会被覆盖吗,打开文件和保存的操作应该放在循环外

redaiconglin 发表于 2022-6-9 21:08:59

hrpzcf 发表于 2022-6-9 20:53
你不觉得每次都以写模式打开相同的xlsx文件会被覆盖吗,打开文件和保存的操作应该放在循环外

谢谢老师我试试看

临时号 发表于 2022-6-9 21:10:53

把代码改成这样试试看
import pandas as pd,numpy as np
for i in range(10):
    writer = pd.ExcelWriter('abc.xlsx', mode='a')
    df = pd.DataFrame(np.random.randint(0,12,size=(3,4)))
    df.to_excel(writer,sheet_name='a')
    writer.save()

redaiconglin 发表于 2022-6-9 21:15:34

hrpzcf 发表于 2022-6-9 20:53
你不觉得每次都以写模式打开相同的xlsx文件会被覆盖吗,打开文件和保存的操作应该放在循环外

老师能否再给点提示。我尝试了将保存和打开文件移到for循环外。但保存的还是最后3行数据。谢谢了

redaiconglin 发表于 2022-6-9 21:28:23

临时号 发表于 2022-6-9 21:10
把代码改成这样试试看

谢谢老师这样能将数据分别写入到10个sheet中,我想一次性写入到一个sheet页中不知道行不行就是10组数据在一个sheet表中。

临时号 发表于 2022-6-9 21:39:11

本帖最后由 临时号 于 2022-6-9 21:42 编辑

改成这样试试
import pandas as pd,numpy as np
writer = pd.ExcelWriter('abc.xlsx', mode='a')
for i in range(10):
    df = pd.DataFrame(np.random.randint(0,12,size=(3,4)))
    df.to_excel(writer,sheet_name='a')
    writer.save()

临时号 发表于 2022-6-9 21:45:45

redaiconglin 发表于 2022-6-9 21:28
谢谢老师这样能将数据分别写入到10个sheet中,我想一次性写入到一个sheet页中不知道行不行就是10组数据在 ...

试试我7楼的代码

redaiconglin 发表于 2022-6-9 22:31:20

临时号 发表于 2022-6-9 21:39
改成这样试试

老师使用mode=‘a’追加模式会报错提示文件未找到。如果使用mode=‘a+’这个模式也会报错搞不明白什么原因

御行黑达摩 发表于 2022-6-9 22:33:08

初始化一个矩阵,例如a = b.head(0),然后写入的话用append,例如a = c.append(d),试试看

redaiconglin 发表于 2022-6-9 22:44:28

御行黑达摩 发表于 2022-6-9 22:33
初始化一个矩阵,例如a = b.head(0),然后写入的话用append,例如a = c.append(d),试试看

好的谢谢老师我试试
页: [1]
查看完整版本: 各位老师pandas在for循环下为何只能保存最后一条数据