Python读取带行号的多列TSV文件
在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可以让你更方便地处理数据,比如添加列、计算平均值等等。