python读取具有行号的多列tsv文件
Posted
技术标签:
【中文标题】python读取具有行号的多列tsv文件【英文标题】:python reading in multi-column tsv file with row numbers 【发布时间】:2014-11-03 01:45:31 【问题描述】:在带有标题的python中读取多列tsv文件的最干净的方法是什么,但是第一列没有标题而是包含每行的行号?
这显然是来自 R 数据帧的文件的常见格式。
例子:
A B C
1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3
有什么想法吗?
【问题讨论】:
你期望什么样的输出? 【参考方案1】:如何使用以下原生 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();
# ...
【讨论】:
使用原生 python 会比使用 pandas 慢很多。【参考方案2】:取决于您之后想要对数据执行的操作(以及文件是否真的是带有 \t 分隔符的 tsv)。如果您只想将它放在一组列表中,您可以使用 csv
模块,如下所示:
import csv
with open("tsv.tsv") as tsvfile:
tsvreader = csv.reader(tsvfile, delimiter="\t")
for line in tsvreader:
print line[1:]
但是,对于简单的 python 操作之外的任何事情,我也推荐 pandas
中的 DataFrame
模块。可以这样使用:
from pandas import DataFrame
df = DataFrame.read_csv("tsv.tsv", sep="\t")
DataFrames 允许对数据集进行高级操作,例如添加列、查找平均值等。
【讨论】:
请考虑更新此答案,因为 from_csv 现在已弃用。这方面没有进一步的进展。建议现在使用 pd.read_csv 。 ***.com/questions/57313621/…【参考方案3】:df = DataFrame.from_csv("tsv.tsv", sep="\t")
自 0.21.0 版起已弃用
df = pd.read_csv("tsv.tsv", sep="\t")
是要走的路
【讨论】:
【参考方案4】:DataFrame.from_csv("tsv.tsv", sep="\t")
不再工作了。 使用
df.read_csv("tsv.tsv", sep="\t")
【讨论】:
【参考方案5】:pandas.read_csv("file.tsv")
DataFrame.from_csv()
不起作用。 DataFrame.read_csv()
不对。
【讨论】:
【参考方案6】:导入 Pandas 库
import pandas as pd
data = pd.read_csv('/ABC/DEF/TSV.tsv', sep='\t')
【讨论】:
以上是关于python读取具有行号的多列tsv文件的主要内容,如果未能解决你的问题,请参考以下文章
新手python怎么从Excel中读取多行多列画并列柱状图?