鱼C论坛

 找回密码
 立即注册
查看: 1162|回复: 10

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

[复制链接]
发表于 2022-6-9 20:47:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我的代码是这样的
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次循环的数据。谢谢老师帮我看看谢谢了
最佳答案
2022-6-9 22:33:08
初始化一个矩阵,例如a = b.head(0),然后写入的话用append,例如a = c.append(d),试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-9 20:53:00 From FishC Mobile | 显示全部楼层
你不觉得每次都以写模式打开相同的xlsx文件会被覆盖吗,打开文件和保存的操作应该放在循环外
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢老师我试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

老师能否再给点提示。我尝试了将保存和打开文件移到for循环外。但保存的还是最后3行数据。谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-9 21:28:23 | 显示全部楼层
临时号 发表于 2022-6-9 21:10
把代码改成这样试试看

谢谢老师这样能将数据分别写入到10个sheet中,我想一次性写入到一个sheet页中不知道行不行就是10组数据在一个sheet表中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

试试我7楼的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-9 22:31:20 | 显示全部楼层

老师使用mode=‘a’追加模式会报错提示文件未找到。如果使用mode=‘a+’这个模式也会报错搞不明白什么原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-9 22:33:08 | 显示全部楼层    本楼为最佳答案   
初始化一个矩阵,例如a = b.head(0),然后写入的话用append,例如a = c.append(d),试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的谢谢老师我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 23:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表