微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 csv 文件中写入大型数据帧

如何解决在 csv 文件中写入大型数据帧

我正在尝试在 csv 文件中编写一个大的 Pandas 数据框(1,00,000+ 行和 23 列)。当我尝试这样做时,出现错误 - RecursionError - 调用 Python 对象时超出最大递归深度

我尝试了多个建议的选项,即使用块大小、拆分列表等,但似乎都没有工作。有人可以帮忙吗?

尝试了以下各种选项。

选项 1:

x_df.to_csv(r"C:\file.csv",index=False,header=False)

选项 2:

MyList = []
MyList =my x_df.values.tolist()
for i in range(0,len(MyList),Chunksize):
    x = []
    x = MyList[i:i+Chunksize]
    with open(r'filename.csv',mode='a',newline='',encoding='utf-8') as myfile:
       wr = csv.writer(myfile)
       wr.writerows(x)

选项 3:

MyList = []
MyList =my x_df.values.tolist()
filename = (r"C:\file.csv")
import csv
file = open(filename,'w+',newline = "")
with file:
   write = csv.writer(file)
   write.writerows(MyList)

提前致谢。

解决方法

处理大型 csv 文件可能会很痛苦,我认为有几个选项可能仍然适用于您的情况。

如果你不是绝对需要它是一个 csv,我认为文件保存方法 here 将是一个更干净的选择,但它用于 xlsx 文件(在数据科学{{3 }},但我相信该网站会限制您每月获得的访问次数)

我必须将它保留为 csv 的第一个想法与分块非常相似,您可以以足够小的块输出一个包含 csv 文件的文件夹,以避免该错误。从那里您可以使用常规 python 文件编写器重新组合文件。我认为这看起来像这样:

MyList = []
MyList =my x_df.values.tolist()
for i in range(0,len(MyList),Chunksize):
    x = []
    x = MyList[i:i+Chunksize]
    with open(f'my_folder/filename{i}-{i+Chunksize}.csv',mode='a',newline='',encoding='utf-8') as myfile:
       wr = csv.writer(myfile)
       wr.writerows(x)

# Then recombine the files
big_csv = ''
for fname in os.listdir('my_folder'):
    with open(f'my_folder/{fname}') as f:
        # Newline might not be necessary/pay attention to whatever your linedelimiters are
        big_csv += f.read() + '\n'

with open('filename.csv') as f:
    f.write(big_csv)

可能有更好的方法来做到这一点,但使用字符串而不是 csv 来避免任何内存问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?