Python读取带行号的多列TSV文件

13 投票
6 回答
55333 浏览
提问于 2025-04-20 16:31

在Python中,读取一个多列的tsv文件(制表符分隔值文件)时,最简单的方法是什么?这个文件有表头,但第一列没有表头,而是包含每一行的行号。

这种格式似乎是从R数据框导出的文件中常见的。

举个例子:

    A      B  C
1   a1     b1 c1
2   a2     b2 c2
3   a3     b3 c3

有什么好主意吗?

6 个回答

0
DataFrame.from_csv("tsv.tsv", sep="\t")
df.read_csv("tsv.tsv", sep="\t")

这个不再工作了。

请使用

1

导入Pandas库

import pandas as pd
data = pd.read_csv('/ABC/DEF/TSV.tsv', sep='\t')
2

你可以试试下面这些原生的Python代码:

with open('tsvfilename') as f:
    lines = f.read().split('\n')[:-1]
    for i, line in enumerate(lines):
        if i == 0: # header
            column_names = line.split()
            # ...
        else:
            data = line.split();
            # ...
6

从版本0.21.0开始,df = DataFrame.from_csv("tsv.tsv", sep="\t") 这个写法已经不再推荐使用了。

现在应该用df = pd.read_csv("tsv.tsv", sep="\t") 这个方法来读取数据。

30

这要看你想怎么处理这些数据(还有这个文件是不是确实用\t作为分隔符的tsv文件)。如果你只是想把数据放在一组列表里,可以用csv模块,像这样:

import csv
with open("tsv.tsv") as tsvfile:
    tsvreader = csv.reader(tsvfile, delimiter="\t")
    for line in tsvreader:
        print line[1:]

不过我也推荐使用pandas里的DataFrame模块,特别是当你需要做一些简单的Python操作以外的事情时。你可以这样使用它:

from pandas import DataFrame
df = DataFrame.read_csv("tsv.tsv", sep="\t")

DataFrame可以让你更方便地处理数据,比如添加列、计算平均值等等。

撰写回答