为多个数据集创建一个numpy数组

时间:2017-08-04 14:22:09

标签: python loops pandas

我有很多数据集,都是(586, 1383)的形状,分别代表经度和纬度。数据集用于土壤湿度数据;例如,print(dataset1[2, 435])会给我一个0.354的值。

目前,我有31个这样的数据集。我想创建一个形状为(31, 586, 1383)的numpy数组来保存所有这些数据集。我现在可以打开我想要添加到数组的所有数据集,如下所示:

directory = r"C:\Users\matth\Downloads\AMSRE"
for root, dirs, filenames in os.walk(directory):
    for f in filenames:
        if f.startswith("AMSR_E_L3_DailyLand_V06_201001"):
        log = open(os.path.join(root, f), 'r')
        file_name = (("C:\\Users\\matth\\Downloads\\AMSRE\\") + f)
        hdf = SD(file_name, SDC.READ)
        g = gdal.Open(('HDF4_EOS:EOS_GRID:') + file_name + (':Ascending_Land_Grid:A_Soil_Moisture'))
        sm = g.ReadAsArray()

        lons = np.fromstring ( urllib2.urlopen("ftp://sidads.colorado.edu/pub/tools/easegrid/lowres_latlon/MLLONLSB").read(), \
        dtype=np.int32 )/100000.
        lats = np.fromstring ( urllib2.urlopen("ftp://sidads.colorado.edu/pub/tools/easegrid/lowres_latlon/MLLATLSB").read(), \
        dtype=np.int32 )/100000.

        lons = lons.reshape(sm.shape)
        lats = lats.reshape(sm.shape)
        smm = np.ma.array ( sm, mask=np.logical_or ( sm==-9999, sm==9999))

最后,print(smm.shape)给了我(586, 1383)。上面的代码只是用纬度和经度来获取数据。我在考虑使用for循环来连续地将文件添加到一个空数组中......不确定它是如何工作的。有谁知道我如何使用这段代码或更改它,所以我可以将数据集添加到形状为(31, 586, 1383)的数组中?

1 个答案:

答案 0 :(得分:0)

pandas documentation所述,DataFrame是2D结构。

  

DataFrame是一个二维标记数据结构,其中包含可能不同类型的列。您可以将其视为电子表格或SQL表或Series对象的字典。

但是,您可以在同一数据框中包含数据框列表或所有数据,并附加一列表示原点。