Pandas保存到多个小CSV文件



Im正在从流中读取CSV数据(例如cat /tmp/rawfile(。下面的演示代码可以工作。

cmd = ('cat', '/tmp/csvfile')
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
csv = io.StringIO(process.stdout.read().decode())
data = pandas.read_csv(csv, index_col=0)
csv.close()

此CSV包含10K行。我想阅读Pandas并将1k行保存到CSV文件中。然后,接下来的1k行将转到下一个CSV文件。这就是我正在努力实现的目标。这可能吗?

有关此的一些信息:

我有一些CSV文件,它们的大小真的很大。(数十亿行(我使用了Split命令,但有几行具有n - newline characters,所以在基于多行进行拆分时,它会将n之后的其余列移动到下一行。

示例:

Row 1:
"col1" | "col2" | "This is
my first row"
Row 2:
"col1" | "col2" | "This is my second row"

第1行-这两行属于一个特定的列。但如果我按行拆分,它会把它拆分成两行。

这就是为什么我想使用Pandas读取流式数据(stdin(,每个数据块100行,并将其放入CSV文件中。然后读取接下来的100行并附加相同的CSV,因为我想每个CSV放1k行。

对此逻辑有什么建议或示例代码吗?

更新:

我的意图是,将1k行放在一个CSV文件中。我每次DF读取100行的原因是为了节省内存。将100行读取到DF中,然后将其刷新到一个文件中,然后是下一个100->重复直到1000行(10次(,然后用不同的csv文件对接下来的1000行重复整个过程

不确定您是否想要,请尝试:

df=pd.DataFrame()
df=df.append(["x"]*1000)

# Loop
i=0
while i <len(df)-1:
df.iloc[i:i+1000,:].to_csv("output_{0}_{1}.csv".format(i,i+1000),index=False)
i+=1000

最新更新