我有一个大文件想在python中使用panda进行处理?

时间:2016-04-25 21:29:04

标签: python pandas

我有一个由标签分隔的大文件文件,文件大小为6.9 GB。我想通过使用熊猫来阅读它。我尝试过很多代码但没有成功。以下是我使用的代码:

chunksize = 10 ** 6
for chunk in pd.read_csv('path/Table_CpG__Avg_methylation_data.txt', sep = '\t', iterator=True,):

    chunk.dtypes
    g = pd.DataFrame(data = chunk)
    g.dtypes
    g['v3']=g[['v1']]+1

    dff_meth= g[['v2','v1','v3','Avg_of_Methy']]
    dff_meth.to_csv("path/Table_All_CpG_methylation_data.bed", sep='\t',index=False,index_label=None)

但是这段代码不起作用。如果任何人可以提供一些帮助

2 个答案:

答案 0 :(得分:0)

我相信你可能想要这样的东西:

chunksize = 10**6    
for chunk in pd.read_csv('input_file', sep = '\t', chunksize = chunksize):
    # Your code goes here... for example:
    chunk.iloc[:,3]=chunk.iloc[:,1]+1     
    dff_meth = chunk.iloc[:,[1,3]]
    # chunk is already a data frame, so no need to use pd.DataFrame(data = chunk)
    # If you want to print dtypes:
    print(chunk.dtypes)

    #finally we write to an output file, appending:
    dff_meth.to_csv('output_file', sep='\t', index=False, index_label=None, header = None , mode = 'a') 

尝试使用一些较小的文件和一个小的chunksize来查看它是否符合您的要求。

答案 1 :(得分:0)

您缺少chunksize参数。

chunksize = 10 ** 6
for chunk in pd.read_csv('your_file.txt', sep ='\t', chunksize = chunksize):
    #your code

完整文档http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html