【问题标题】:Extracting data using fieldnames使用字段名提取数据
【发布时间】:2016-01-26 22:21:21
【问题描述】:

我已使用以下方法从 CSV 数据文件中解析和提取行和字段名称:

reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t')
fn = reader.fieldnames

如何使用字段名访问任何行中的已解析数据?例如,字段名可以是AABBCCDD。如何获取第 5 行的DD 或第 3 行的AA 的值?

【问题讨论】:

  • 我不确定你是否可以跳过行,但你可以在阅读x 行并做某事之前阅读x-1 行并忽略结果
  • rt 是错字吗?我认为它应该是rb 用于读取二进制

标签: python csv


【解决方案1】:

只要文件不是太大,只需将阅读器转换为列表即可:

data = list(reader)

现在访问第 1 行中的 AA 列:

data[0]['AA']

或第 3 行中字段名称 3 的列:

data[2][fn[2]]

【讨论】:

    【解决方案2】:

    一种简单的方法是将文件中的所有数据存储到容器中。另一个答案的替代方法是使用 pandas 数据框:

    >>import pandas as pd
    >>from io import StringIO  # just to make a fake in memory file
    >>s = StringIO('AA\tBB\tCC\tDD\n1\t2\t3\t4\n11\t12\t13\t14\n') # fake data
    >>data = pd.read_table(s)
    >>data.loc[0,'AA']  # access row 0 (the first row) and column AA
    1
    

    编辑:这确实使用了标准库中未包含的不同包,但当我经常阅读和操作 csv 文件时,我经常发现使用 pandas 比使用 csv 更容易。

    【讨论】:

      猜你喜欢
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2019-07-14
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多