Qual é a maneira mais limpa de ler em um arquivo tsv de várias colunas em python com cabeçalhos, mas onde a primeira coluna não tem cabeçalho e, em vez disso, contém os números de linha de cada linha?
Este é aparentemente um formato comum de arquivos provenientes de quadros de dados R.
Exemplo:
A B C
1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3
Alguma ideia?
Respostas:
10 para resposta № 1Depende do que você deseja fazer com os dados depois (e se o arquivo for realmente um tsv com um delimitador t). Se você quiser apenas em um conjunto de listas, você pode usar o csv
módulo assim:
import csv
with open("tsv.tsv") as tsvfile:
tsvreader = csv.reader(tsvfile, delimiter="t")
for line in tsvreader:
print line[1:]
No entanto, eu também recomendaria o DataFrame
módulo de pandas
para qualquer coisa fora das operações simples de python. Pode ser usado como tal:
from pandas import DataFrame
df = DataFrame.from_csv("tsv.tsv", sep="t")
DataFrames permitem manipulação de alto nível de conjuntos de dados, como adicionar colunas, encontrar médias, etc.
0 para resposta № 2
Que tal usar os seguintes códigos Python nativos:
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();
# ...