Pandas to_csv()总是给出TimeoutError:[Errno 60]操作超时

时间:2018-03-14 23:57:02

标签: python pandas

我有一个巨大的数据集,我需要将csv写入共享文件驱动器。 我之前做过这个并研究过相同的数据。 这次唯一的区别是我将deliminator从逗号“,”更改为分号“;”,但这不应该改变任何东西吗?

我的数据是熊猫数据帧;它有字符串列和数字列。有大约1600万行,大约20列。

这是我写的用于将数据写入块中的csv文件的函数:

def write_to_csv_in_chunks(input_data, file_path, chunk_size=1000000):
    total_rows = len(input_data)
    current_row = 0

    while (current_row + chunk_size) < total_rows:
        end_row = current_row + chunk_size
        subset_data = input_data[current_row:end_row-1]
        subset_data.to_csv(os.path.join(file_path, 'row '+ str(current_row) + ' to row '
                                        + str(end_row-1) + '.csv'))
        current_row = end_row
        print('finished writing file up to row ', current_row)

    subset_data = input_data[current_row:]
    subset_data.to_csv(os.path.join(file_path, 'row '+ str(current_row) + ' to last row.csv'),
                       sep=';', index=False)

    return print('all files finished writing')

这是我调用函数:

write_to_csv_in_chunks(input_data=data_all, file_path=baseDir)

但是当我处理数据的步骤时,我一直收到超时错误。 (我知道这是因为我在调用csv函数之前就有了一个print语句):

Traceback (most recent call last):
  File "/Users/Documents/distance_analysis serial.py", line 195, in <module>
    write_to_csv_in_chunks(input_data=data_all, file_path=baseDir)
  File "/Users/Documents/helping_fxns.py", line 67, in write_to_csv_in_chunks
    + str(end_row-1) + '.csv'))
  File "/Users/Documents/python3/lib/python3.6/site-packages/pandas/core/frame.py", line 1524, in to_csv
    formatter.save()
  File "/Users/Documents/python3/lib/python3.6/site-packages/pandas/io/formats/format.py", line 1656, in save
    f.close()
TimeoutError: [Errno 60] Operation timed out

非常感谢任何帮助!

PS:我对这个话题进行了研究,但却找不到任何真正的东西。也许我没有正确搜索;我也很感激任何指针。

1 个答案:

答案 0 :(得分:0)

尝试将分隔符切换回&#39;,&#39;确保它仍然以这种方式运作

假设它确实存在,很可能是格式化问题 - 一路上某处有一个额外的分号,正在弄乱表结构,结果级联会导致太多数据写入磁盘或其他一些这样的事情