Python 使用字段名提取数据
我已使用以下工具从CSV数据文件中解析和提取了行和字段名:Python 使用字段名提取数据,python,csv,Python,Csv,我已使用以下工具从CSV数据文件中解析和提取了行和字段名: reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t') fn = reader.fieldnames 如何使用fieldname访问任何行中解析的数据?例如,字段名可以是AA,BB,CC,DD。如何获取第5行中的DD或第3行中的AA的值?只要文件不是太大,只需将读取器转换为列表: data = list(reader) 现在访问第1行中的列AA:
reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t')
fn = reader.fieldnames
如何使用fieldname访问任何行中解析的数据?例如,字段名可以是
AA
,BB
,CC
,DD
。如何获取第5行中的DD
或第3行中的AA
的值?只要文件不是太大,只需将读取器转换为列表:
data = list(reader)
现在访问第1行中的列AA
:
data[0]['AA']
或第3行中字段名3的列:
data[2][fn[2]]
一种简单的方法是将文件中的所有数据存储到容器中。另一种解决方案是使用熊猫数据帧:
>>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更容易。我不确定您是否可以跳过行,但是你可以在阅读
x-1
行之前忽略结果,然后再做一些事情,rt
是打字错误吗?我认为读取二进制文件应该是rb