WDR314 2023-01-18 11:56 采纳率: 50%
浏览 123
已结题

fortran读取.csv文件

因为想做一些关于海冰的研究,所以下载了数据,数据格式为.HDF格式,目前已经可以读取这些数据并且能够输出在一个.csv文件中,想用fortran对这些数据进行一下处理,但是不知道怎么读这种形式的文件。
HDF文件是通过python读取的。

img

  • 写回答

5条回答 默认 最新

  • chuifengde 2023-01-19 01:52
    关注

    既然可用python读取HDF,那就用python把它处理后生成标准的csv【即单元格中保存单个数据】,不要中间走弯路,你图中的csv每单元格中是列表格式,用fortran处理起来估计麻烦些

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    WDR314 2023-01-19 03:37

    我不太擅长python 上边是我的代码,怎么修改一下可以实现单元格中保存单个数据呢?

    回复
    WDR314 回复 WDR314 2023-01-19 03:38

    from pyhdf.SD import SD, SDC
    from pyhdf.HDF import HDF
    from pyhdf.VS import VS
     
    import numpy as np
    import pandas as pd
     
    # Change this to input full path of input file
     
    fname = '/Users/wudiran/desktop/2006335045240_03158_CS_CRYOSPHERE-AUX_GRANULE_P_R05_E02_F00.hdf'
     
    # Read 3D data
     
    f = SD(fname, SDC.READ)
    sds_obj = f.select('Age')
    age = sds_obj.get()
    sds_obj = f.select('Extent')
    extent = sds_obj.get()
    sds_obj = f.select('NISE_latitude')
    NISE_latitude = sds_obj.get()
    sds_obj = f.select('NISE_longitude')
    NISE_longitude = sds_obj.get()
    sds_obj = f.select('NISE_pixel_index_x')
    NISE_pixel_index_x = sds_obj.get()
    sds_obj = f.select('NISE_pixel_index_y')
    NISE_pixel_index_y = sds_obj.get()
    f.end()
    #-----------------------------------------------------
    #create dataframe
    df = pd.DataFrame()
    #age_list = list(age)
    extent_list = list(extent)
    nise_latitude_list = list(NISE_latitude)
    nise_longitude_list = list(NISE_longitude)
     
     
    df['nise_latitude_list'] = nise_latitude_list
    df['nise_longitude_list'] = nise_longitude_list
    df['extent'] = extent_list
    #print(np.mean(df['nise_latitude_list'][0]))   average
    #print(np.mean(df['nise_longitude_list'][0]))  average
     
    print(df)
    df.to_csv('/Users/wudiran/desktop/climate_data.csv')
    #-----------------------------------------------------
     
    # Read 2D data
     
    f = HDF(fname)
    vs = f.vstart()
     
    profile_time = []
    vd = vs.attach('Profile_time')
    for rec in vd[:]:
        profile_time.append(rec[0])
    profile_time = np.array(profile_time)
     
    # Read 1D data
     
    vd = vs.attach('UTC_start')
    UTC_start = vd[0][0]
    vd = vs.attach('TAI_start')
    TAI_start = vd[0][0]
     
    vs.end()
    #f.close()
    
    
    ```python
    
    
    
    
    

    回复
查看更多回答(4条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月20日
  • 创建了问题 1月18日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部