Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 非常大的制表符分隔文本文件的列选择_Python_R_Large Files - Fatal编程技术网

Python 非常大的制表符分隔文本文件的列选择

Python 非常大的制表符分隔文本文件的列选择,python,r,large-files,Python,R,Large Files,我正在以.txt格式处理一个非常大的以制表符分隔的表(大约20000行*30000列),这使得文件大于20GB。我检查了桌面的RAM,似乎无法使用R中的read.delim或python中的pandas直接读取文件。我目前正在考虑根据列的过滤器生成表的一小部分,新的文本文件将是20000行*1200列。我已经在另一个文件中保存了目标文件的列名,我想我的下一步就是检查原始文件中给定列的colname是否在我的新列表中,并基于此子集数据帧。我的问题是,如何才能最简洁地进行过滤 我知道pandas中有

我正在以.txt格式处理一个非常大的以制表符分隔的表(大约20000行*30000列),这使得文件大于20GB。我检查了桌面的RAM,似乎无法使用R中的read.delim或python中的pandas直接读取文件。我目前正在考虑根据列的过滤器生成表的一小部分,新的文本文件将是20000行*1200列。我已经在另一个文件中保存了目标文件的列名,我想我的下一步就是检查原始文件中给定列的colname是否在我的新列表中,并基于此子集数据帧。我的问题是,如何才能最简洁地进行过滤


我知道pandas中有一种分块方法,但在我看来,它更多的是基于特定行数切割数据帧。我一直在编写的bash脚本也是关于基于行的切片的。如果有人能提出一种基于列名而不是行名/数字过滤大型数据帧的简洁方法,我会非常感激。如果可能的话,我更期待一个基于python的解决方案(也欢迎使用R或bash)。

假设您想要的列是第5列,只需一次处理一行文件,如下所示

output = list()
with open('yourfile.txt', 'r') as _f:
    for line in _f:
        output.append(line.split(',')[4]) 
print(output)

你们能不能用老式的方式一次只解析一行,只保留你们想要的列?谢谢你们的建议。它应该是工作无论如何,我已经可以尝试写这样一个脚本。但我会保留这个问题,只是为了检查是否还有其他解决方案,例如,一些未知的内置函数。这是否回答了您的问题?您只能读取第一行以获取标题,而在使用pandas
read\u csv
读取时,您可以指定
usecols
一次仅读取部分列。感谢您的建议。Andrew提出的区块问题略有不同,因为我的筛选是在列规模上进行的。但我认为,通过总结你提出的所有建议,我将能够继续这一进程。