【问题标题】:python reading in multi-column tsv file with row numberspython读取具有行号的多列tsv文件
【发布时间】:2014-11-03 01:45:31
【问题描述】:

在带有标题的python中读取多列tsv文件的最干净的方法是什么,但是第一列没有标题而是包含每行的行号?

这显然是来自 R 数据帧的文件的常见格式。

例子:

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

有什么想法吗?

【问题讨论】:

  • 你期望什么样的输出?

标签: python dataframe tsv


【解决方案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 允许对数据集进行高级操作,例如添加列、查找平均值等。

【讨论】:

【解决方案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')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-07-30
          • 2020-08-10
          • 1970-01-01
          • 2020-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多