首页 > 解决方案 > 如何在python中读取一个大的tsv文件并将其转换为csv

问题描述

我有一个tsv要转换为csv文件的大文件(大约 12 GB)。对于较小tsv的文件,我使用以下代码,它可以工作但速度很慢:

import pandas as pd

table = pd.read_table(path of tsv file, sep='\t')
table.to_csv(path andname_of csv_file, index=False)

但是,此代码不适用于我的大文件,并且内核在中间重置。

有没有办法解决这个问题?有谁知道这个任务是否可以用 Dask 而不是 Pandas 来完成?

我正在使用 Windows 10。

标签: pythonpandascsv

解决方案


您可以逐行读取并逐行处理它们,而不是一次将所有行加载到内存中:

Python 3.x:

fs=","
table = str.maketrans('\t', fs)
fName = 'hrdata.tsv'
f = open(fName,'r')

try:
  line = f.readline()
  while line:
    print(line.translate(table), end = "")
    line = f.readline()

except IOError:
  print("Could not read file: " + fName)

finally:
  f.close()

输入(hrdata.tsv):

Name    Hire Date       Salary  Sick Days remaining
Graham Chapman  03/15/14        50000.00        10
John Cleese     06/01/15        65000.00        8
Eric Idle       05/12/14        45000.00        10
Terry Jones     11/01/13        70000.00        3
Terry Gilliam   08/12/14        48000.00        7
Michael Palin   05/23/13        66000.00        8

输出:

Name,Hire Date,Salary,Sick Days remaining
Graham Chapman,03/15/14,50000.00,10
John Cleese,06/01/15,65000.00,8
Eric Idle,05/12/14,45000.00,10
Terry Jones,11/01/13,70000.00,3
Terry Gilliam,08/12/14,48000.00,7
Michael Palin,05/23/13,66000.00,8

命令:

python tsv_csv_convertor.py > new_csv_file.csv

笔记:

如果您使用Unix环境,只需运行以下命令:

tr '\t' ',' <input.tsv >output.csv

推荐阅读