如何从python中的文本文件加载具有不同位置的特定列?

时间:2017-05-24 13:05:10

标签: python-2.7 numpy text-files

我试图阅读文本文件中在线存储的346条美国河流的排放数据。文件或多或少采用以下格式:

Measurement_number    Date          Gage_height     Discharge_value     
1                     2017-01-01    10              1000
2                     2017-01-20    15              2000
# etc.

我只想读取量具高度和放电值列。 问题是,在大多数文件中,带有元数据的其他列都会添加到“Gage height'之前”。列,所以我不能简单地阅读第3和第4列,因为它们的索引不同。

我试图找到一种方法来说明'读取名称为' Gage_height'和' Discharge_value'',但我还没有成功。

我希望任何人都可以提供帮助。我目前正在尝试使用numpy.genfromtxt加载文本文件,因此找到包含该软件包的解决方案会很棒,但其他解决方案也非常受欢迎。

这是我目前的代码

data_url=urllib2.urlopen(#the url of this specific site)
data=np.genfromtxt(data_url,skip_header=1,comments='#',usecols=2,3])

1 个答案:

答案 0 :(得分:0)

您可以使用names=True选项genfromtxt,然后使用列名称选择要使用usecols读取的列。

例如,要从您的数据文件中阅读'Gage_height''Discharge_value'

data = np.genfromtxt(filename, names=True, usecols=['Gage_height', 'Discharge_value'])

请注意,如果您使用skip_header=1,则无需设置names=True

然后,您可以使用其名称访问列:

gage_height = data['Gage_height']               #  == array([ 10.,  15.])
discharge_value = data['Discharge_value']       #  == array([ 1000.,  2000.])

有关详细信息,请参阅the docs here