将Panda Dataframes写入块中的csv文件

时间:2016-07-22 16:20:15

标签: python pandas dataframe export-to-csv large-data

我有一组大数据文件(1M行x 20列)。但是,我只对5个左右的数据列感兴趣。

我想我可以通过仅使用感兴趣的列创建这些文件的副本来使我更容易,因此我可以使用较小的文件进行后期处理。

我的计划是将文件读入数据帧,然后写入csv文件。

我一直在研究将大块数据文件读取到数据帧中。

但是,我无法找到任何关于如何将数据写入块中的csv文件的内容。

以下是我现在正在尝试的内容,但这不附加csv文件:

with open(os.path.join(folder, filename), 'r') as src:
    df = pd.read_csv(src, sep='\t',skiprows=(0,1,2),header=(0), chunksize=1000)
    for chunk in df:
        chunk.to_csv(os.path.join(folder, new_folder,
                                  "new_file_" + filename), 
                                  columns = [['TIME','STUFF']])

3 个答案:

答案 0 :(得分:11)

查看chunksize方法中的to_csv参数。 Here是文档。

写入文件看起来像:

df.to_csv("path/to/save/file.csv", chunksize=1000, cols=['TIME','STUFF'])

答案 1 :(得分:9)

尝试:

chunk.to_csv(os.path.join(folder, new_folder, "new_file_" + filename), cols = [['TIME','STUFF']], mode='a')

mode='a'告诉大熊猫追加。

答案 2 :(得分:0)

为什么不只阅读感兴趣的列然后保存?

file_in = os.path.join(folder, filename)
file_out = os.path.join(folder, new_folder, 'new_file' + filename)

df = pd.read_csv(file_in, sep='\t', skiprows=(0, 1, 2), header=0, names=['TIME', 'STUFF'])
df.to_csv(file_out)