在Pandas的dataframe.to_csv中设置缓冲区为0

5
有没有办法在使用Pandas dataframe.to_csv()时设置缓冲区为'0'?我查看了文档,似乎不允许将其作为参数。我是否忽略了什么?
编辑:我之所以问这个问题,是因为我正在输出数据框,其大小从几百行到数千行不等(始终具有相同的7列),后续处理最终检查文件时偶尔会失败,因为有时它还没有完成写入。
当然,我可以引入一个延迟(3-5分钟),但如果不必要就不愿意任意减慢代码速度 - 我更愿意强制该代码在继续之前等待输出的完成,在使用open()编写文件时,将缓冲区值设置为“ 0”很好用。

如果您不传递任何内容,则为什么需要执行此操作?这将返回一个输出字符串。 - EdChum
刚刚添加了更多的信息。 - traggatmot
如果你只是想让另一个进程知道文件创建已完成,我在类似的情况下所做的是创建一个名为 finished.txt 的空文件,然后使另一个进程等待直到该文件被创建。这样只会有几微秒的延迟,而且不会出现奇怪的锁定问题。只要确保在开始编写 csv 之前删除 finished.txt 文件即可。 - Munir
那么它不能同时处理写入两个文件?也就是说,如果顺序是1)写入output.csv,2)写入finished.txt,然后3)下一个进程,Python会确保在完成写入finished.txt之前完成写入output.csv吗?这样下一个进程(步骤3)在output.csv被写入之前就不会启动了? - traggatmot
1个回答

4

如果我理解你的问题正确,你可以实现以下内容。这个代码片段将一个StringIO实例作为第一个参数传递给to_csv,并调用seek(0)

import StringIO

#### your code here...assuming something like:
#### import pandas as pd
#### data = {"key1":"value1"}
#### dataframe = pd.DataFrame(data, index=dataframe)

buffer = StringIO.StringIO()
dataframe.to_csv(buffer)
buffer.seek(0)
output = buffer.getvalue()
buffer.close()

您可以随意操作output


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接