如何将表中的特定信息列加载到Python中的数组中?

时间:2015-02-13 00:18:05

标签: python arrays

所以,我应该使用带有变量的url来加载SORCE数据库中的信息,然后创建一个波长数组。

我正在使用以下方式保存数据:

   url = "http://lasp.colorado.edu/lisird/tss/sorce_ssi.csv?&time>=%(YYYY)04d-%(MM)02d-%(DD)02d&time<%(yyyy)04d-%(mm)02d-%(dd)02d" %{"YYYY":YYYY, "MM":MM, "DD":DD, "yyyy":yyyy, "mm":mm, "dd":dd}
urlptr = urllib2.urlopen(url)
data = ascii.read(urlptr)

这会产生如下输出:

time (days since 2003-01-24) wavelength (nm) ... instrument (id) version
---------------------------- --------------- ... --------------- -------
                      2534.5             0.5 ...            57.0    10.0
                      2534.5             1.5 ...            57.0    10.0
                      2534.5             2.5 ...            57.0    10.0
                      2534.5             3.5 ...            57.0    10.0
                      2534.5             4.5 ...            57.0    10.0
                      2534.5             5.5 ...            57.0    10.0
                      2534.5             6.5 ...            57.0    10.0
                      2534.5             7.5 ...            57.0    10.0
                      2534.5             8.5 ...            57.0    10.0
                      2534.5             9.5 ...            57.0    10.0
                      2534.5            10.5 ...            57.0    10.0
                         ...             ... ...             ...     ...
                      2898.5         2300.43 ...             nan     nan
                      2898.5         2311.89 ...             nan     nan
                      2898.5         2323.28 ...             nan     nan
                      2898.5         2334.63 ...             nan     nan
                      2898.5          2345.9 ...             nan     nan
                      2898.5         2357.11 ...             nan     nan
                      2898.5         2368.28 ...             nan     nan
                      2898.5         2379.37 ...             nan     nan
                      2898.5         2390.42 ...             nan     nan
                      2898.5          2401.4 ...             nan     nan
                      2898.5         2412.34 ...             nan     nan

我首先想到创建波长数组就是写下这样的东西:

wlength = loadtxt(data, usecols=(1))

然而,当我运行这个时,我得到一个类型错误,说'int'对象不可迭代。

我知道整数不是可迭代的,但我如何将我正在寻找的信息转化为可迭代的东西?

2 个答案:

答案 0 :(得分:0)

以下是使用csv模块的示例:

import csv
import urllib2

wavelengths = []
# small time range for example
url = "http://lasp.colorado.edu/lisird/tss/sorce_ssi.csv?&time%3E=2014-01-01&time%3C2014-01-10"
urlptr = urllib2.urlopen(url)

csv_reader = csv.reader(urlptr)
first_line = True
for row in csv_reader:
    if first_line:
        first_line = False
        continue
    wavelengths.append(row[1])

print "There's", len(wavelengths), "wavelengths"
print "First 10", wavelengths[:10]

答案 1 :(得分:0)

只需使用pandas库。这很容易做到。

import pandas as pd

YYYY = 2003
MM = 1
DD = 24

yyyy = 2003
mm = 3
dd = 1

url = "http://lasp.colorado.edu/lisird/tss/sorce_ssi.csv?&time>={0}-{1:02}-{2:02}&time<{3}-{4:02}-{5:02}".format(YYYY,MM,DD,yyyy,mm,dd)

df = pd.read_csv(url)
print df.head() # Prints the first 5 lines as a preview.

# Create array of wavelength.
wavelength_col = df["wavelength (nm)"]

# Print the maximum value of the column.
print wavelength_col.max() #2412.34

您可以查看pandas的安装说明以及文档here