Как пройти через JSON, чтобы получить почасовые значения и записать в CSV? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть JSON с 23 часами данных. (Будут другие JSON, которые обрабатываются таким же образом, следовательно, другие переменные в нижней части цикла for.) Я получаю эти данные через URL с широтой / долготой. С каждым lat / lng связано поле field id, связанное с ним.

Я хотел бы записать validTime и value из каждого словаря в .csv с моим идентификатором соответствующего поля. Я должен случайно получить 23 строки на field id. Я получаю только 3-й час за каждый лат / лнг. Что нужно изменить в моем коде?

Введите:

enter image description here

Мой вывод должен выглядеть примерно так:

enter image description here

{
    "series": [{
        "validTime": "2019-05-13T02:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T03:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T04:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T05:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T06:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T07:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T08:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T09:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T10:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T11:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T12:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T13:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T14:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T15:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T16:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T17:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T18:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T19:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T20:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T21:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }, {
        "validTime": "2019-05-13T22:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.01
    }, {
        "validTime": "2019-05-13T23:00:00Z",
        "products": ["skywise-conus-1hr-precipitation-analysis"],
        "value": 0.0
    }],
    "longitude": -95.175648,
    "startTime": "2019-05-13T01:00:00Z",
    "latitude": 44.797207,
    "endTime": "2019-05-13T23:00:00Z",
    "precipitation": 0.02,
    "unit": {
        "description": "inches",
        "label": "\""
    }
}
df = pd.read_csv(config.input_csv,usecols=['field id', 'lat', 'lon'], dtype=str)

for lat, lon, id_, startDate, endDate, t in zip(latval, lonval, idVal,
       startDayValStr, endDayValStr, timeStr):
        #### a bunch of code for daily weather values####

       hrPrecip = 'https://insight.api.wdtinc.com/hourly-precipitation/' + str(lat)+'/' + str(lon) + time_param + '&unit=inches'
       resp_pre_hr = se_.get(hrPrecip, auth=(config.dtn_app_id, config.dtn_key), timeout=30)

       preValHrly = str(json.loads(resp_pre_hr.content)['series'][0]['value'])

       preValHrlyL.append(preValHrly)



      for preValHrlyLval, humidityHrlyLval, tempValHrlyLval  in zip (preValHrlyL,humidityHrlyL, tempValHrlyL):

           hrly_df = pd.DataFrame({'dateTime' :[dfTimeVal], 'field id': [id_], 'HourlyPrecipIn': [preValHrlyLval],'HourlyRH' : [humidityHrlyLval], 'HourlyTempF' : [tempValHrlyLval]})

           hrly_df = hrly_df[['dateTime','field id','HourlyPrecipIn','HourlyRH', 'HourlyTempF']]

           hrly_df.head()
           hrlydfs = hrLylst.append(hrly_df)

           pd.concat(hrLylst).to_csv(config.output_csv_hourly, encoding='utf-8', index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...