【问题标题】:Pandas to_csv() always give TimeoutError: [Errno 60] Operation timed outPandas to_csv() 总是给出 TimeoutError: [Errno 60] Operation timed out
【发布时间】:2018-03-14 23:57:02
【问题描述】:

我有一个庞大的数据集,需要将其写入 csv 到共享文件驱动器中。 我以前这样做过,并且处理过相同的数据。 这次唯一的区别是我把分隔符从逗号“,”改成了分号“;”,但这应该不会改变什么吧?

我的数据是熊猫数据框;它有字符串列和数字列。大约有 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)

但是当我在写入数据的步骤时,我不断收到超时错误。 (我知道这一点是因为我在调用 write to csv 函数之前有一个打印语句):

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:我对该主题进行了研究,但实际上找不到任何东西。也许我没有正确搜索;也将不胜感激。

【问题讨论】:

  • 你为什么一次写一行?
  • @StephenRauch 哦!我不是。我一次写 100 万行。
  • 您写文件花了多长时间?因为我有 1300 万行的类似问题,但它总是挂起

标签: python pandas


【解决方案1】:

尝试将分隔符切换回“,”以确保它仍然可以正常工作

假设确实如此,可能是格式问题 - 沿途某处有一个额外的分号,正在弄乱表结构,并且由此产生的级联导致太多数据写入磁盘或其他一些这样的事

【讨论】:

  • 嗯,你是对的!逗号仍然有效......在来这里之前应该尝试过。非常感谢您的建议!
猜你喜欢
  • 2021-12-06
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 2015-09-11
  • 2016-03-17
  • 1970-01-01
相关资源
最近更新 更多