如何将带有.txt扩展名的逗号分隔值读入Python数组?

1 投票
5 回答
639 浏览
提问于 2025-04-17 16:31

我是一名生物学家,对Python非常非常陌生,之前学过一点R语言。

我有一个非常大的文本文件(3GB,太大了,R处理不了),里面的所有值都是用逗号分隔的,但文件扩展名是.txt(我不知道这是否重要)。我想做的事情是:

把它读入Python,变成类似R中数据框的对象,

去掉中间的某些列,

减小这个对象的大小,

然后把它写成txt文件。

最后再把剩下的部分拿去R里用。

如果你能帮我,我会非常高兴。谢谢!

5 个回答

1

我对R语言中的数据框不太熟悉,但pandas提供了一些工具,可以帮助你把csv文件读入pandas的数据框中,具体可以参考这个链接

from pandas import read_csv    
df = read_csv('yourfile.txt')
print df
print df['Line']

如果这不是你需要的,你也可以使用csv模块,逐行读取你的csv文件,把每一行作为一个Python列表,然后放入你想要的任何数据结构中。

2

这样做会占用很少的内存,因为它不会一次性加载整个文件。

import csv
with open('in.txt', 'rb') f_in, open('out.csv', 'wb') as f_out:
    reader = csv.reader(f_in)
    writer = csv.writer(f_out)
    for row in reader:
        # keep first two columns and last three columns
        writer.writerow(row[:2] + row[-3:])

注意:如果你使用的是Python 3,请将文件模式改为 'r'(读取)和 'w'(写入)。

3

其实你不一定要先学Python。你的问题跟这个问题很像。被标记为正确答案的方法是逐行读取大文件,然后创建一个新的、更小的文件。还有一些不错的替代方案,比如使用sqlitesqdf这个包,或者使用ff这个包。最后一种方法特别适合列数相对行数比较少的情况。

撰写回答