Python 向数据帧追加GeoMet API请求
我目前正在使用GeoMet API获取天气预报信息。我想将此数据附加到新的熊猫数据框中:Python 向数据帧追加GeoMet API请求,python,json,pandas,api,Python,Json,Pandas,Api,我目前正在使用GeoMet API获取天气预报信息。我想将此数据附加到新的熊猫数据框中: print("precipiation layer: ", layer) print((type(forecast_data_list))) print(forecast_data_list) print(type(forecast_data_list[0])) full_forecast_data = {'data': []} index = 0 for forecast_mean
print("precipiation layer: ", layer)
print((type(forecast_data_list)))
print(forecast_data_list)
print(type(forecast_data_list[0]))
full_forecast_data = {'data': []}
index = 0
for forecast_mean in forecast_data_list:
forecast_data = {}
forecast_data['precip_data'] = forecast_mean
forecast_data['date'] = time[index].strftime("%B %d, %Y")
forecast_data['utc_time'] = time[index].strftime("%H:%M")
forecast_data['local_time'] = local_time[index].strftime("%H:%M") #"%d-%m-%Y-%H-%M"
# add forecast to the list
full_forecast_data['data'].append(forecast_data)
index = index + 1
print(type(full_forecast_data))
print(json.dumps(full_forecast_data, sort_keys=False, indent=2))
输出如下所示:
precipiation layer: REPS.DIAG.3_PRMM.ERMEAN
<class 'list'>
[0.0, 0.0, 0.0, 0.0, 0.0099999998, 0.0, 0.0, 0.0, 0.00084472657, -0.0011035156, 0.099999994, 0.016948242, 0.035, 0.0, 0.0, -0.0011035156, 0.0019482422, 0.006948242, -0.0030517578, 0.0, 0.039999999, 0.0, 0.0, 0.0]
<class 'float'>
<class 'dict'>
{
"data": [
{
"precip_data": 0.0,
"date": "May 12, 2021",
"utc_time": "15:00",
"local_time": "10:00"
},
{
"precip_data": 0.0,
"date": "May 12, 2021",
"utc_time": "18:00",
"local_time": "13:00"
},
{
"precip_data": 0.0,
"date": "May 12, 2021",
"utc_time": "21:00",
"local_time": "16:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "00:00",
"local_time": "19:00"
},
{
"precip_data": 0.0099999998,
"date": "May 13, 2021",
"utc_time": "03:00",
"local_time": "22:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "06:00",
"local_time": "01:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "09:00",
"local_time": "04:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "12:00",
"local_time": "07:00"
},
{
"precip_data": 0.00084472657,
"date": "May 13, 2021",
"utc_time": "15:00",
"local_time": "10:00"
},
{
"precip_data": -0.0011035156,
"date": "May 13, 2021",
"utc_time": "18:00",
"local_time": "13:00"
},
{
"precip_data": 0.099999994,
"date": "May 13, 2021",
"utc_time": "21:00",
"local_time": "16:00"
},
{
"precip_data": 0.016948242,
"date": "May 14, 2021",
"utc_time": "00:00",
"local_time": "19:00"
},
{
"precip_data": 0.035,
"date": "May 14, 2021",
"utc_time": "03:00",
"local_time": "22:00"
},
{
"precip_data": 0.0,
"date": "May 14, 2021",
"utc_time": "06:00",
"local_time": "01:00"
},
{
"precip_data": 0.0,
"date": "May 14, 2021",
"utc_time": "09:00",
"local_time": "04:00"
},
{
"precip_data": -0.0011035156,
"date": "May 14, 2021",
"utc_time": "12:00",
"local_time": "07:00"
},
{
"precip_data": 0.0019482422,
"date": "May 14, 2021",
"utc_time": "15:00",
"local_time": "10:00"
},
{
"precip_data": 0.006948242,
"date": "May 14, 2021",
"utc_time": "18:00",
"local_time": "13:00"
},
{
"precip_data": -0.0030517578,
"date": "May 14, 2021",
"utc_time": "21:00",
"local_time": "16:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "00:00",
"local_time": "19:00"
},
{
"precip_data": 0.039999999,
"date": "May 15, 2021",
"utc_time": "03:00",
"local_time": "22:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "06:00",
"local_time": "01:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "09:00",
"local_time": "04:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "12:00",
"local_time": "07:00"
}
]
}
沉积层:REPS.DIAG.3_PRMM.ermen
[0.0, 0.0, 0.0, 0.0, 0.0099999998, 0.0, 0.0, 0.0, 0.00084472657, -0.0011035156, 0.099999994, 0.016948242, 0.035, 0.0, 0.0, -0.0011035156, 0.0019482422, 0.006948242, -0.0030517578, 0.0, 0.039999999, 0.0, 0.0, 0.0]
{
“数据”:[
{
“精确数据”:0.0,
“日期”:“2021年5月12日”,
“utc_时间”:“15:00”,
“当地时间”:“10:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月12日”,
“utc_时间”:“18:00”,
“当地时间”:“13:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月12日”,
“utc_时间”:“21:00”,
“当地时间”:“16:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月13日”,
“utc_时间”:“00:00”,
“当地时间”:“19:00”
},
{
“精确数据”:0.00999998,
“日期”:“2021年5月13日”,
“utc_时间”:“03:00”,
“当地时间”:“22:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月13日”,
“utc_时间”:“06:00”,
“当地时间”:“01:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月13日”,
“utc_时间”:“09:00”,
“当地时间”:“04:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月13日”,
“utc_时间”:“12:00”,
“当地时间”:“07:00”
},
{
“精确数据”:0.00084472657,
“日期”:“2021年5月13日”,
“utc_时间”:“15:00”,
“当地时间”:“10:00”
},
{
“精确数据”:-0.0011035156,
“日期”:“2021年5月13日”,
“utc_时间”:“18:00”,
“当地时间”:“13:00”
},
{
“精确数据”:0.0999994,
“日期”:“2021年5月13日”,
“utc_时间”:“21:00”,
“当地时间”:“16:00”
},
{
“精确数据”:0.016948242,
“日期”:“2021年5月14日”,
“utc_时间”:“00:00”,
“当地时间”:“19:00”
},
{
“精确数据”:0.035,
“日期”:“2021年5月14日”,
“utc_时间”:“03:00”,
“当地时间”:“22:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月14日”,
“utc_时间”:“06:00”,
“当地时间”:“01:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月14日”,
“utc_时间”:“09:00”,
“当地时间”:“04:00”
},
{
“精确数据”:-0.0011035156,
“日期”:“2021年5月14日”,
“utc_时间”:“12:00”,
“当地时间”:“07:00”
},
{
“精确数据”:0.0019482422,
“日期”:“2021年5月14日”,
“utc_时间”:“15:00”,
“当地时间”:“10:00”
},
{
“精确数据”:0.006948242,
“日期”:“2021年5月14日”,
“utc_时间”:“18:00”,
“当地时间”:“13:00”
},
{
“精确数据”:-0.0030517578,
“日期”:“2021年5月14日”,
“utc_时间”:“21:00”,
“当地时间”:“16:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月15日”,
“utc_时间”:“00:00”,
“当地时间”:“19:00”
},
{
“精确数据”:0.03999999,
“日期”:“2021年5月15日”,
“utc_时间”:“03:00”,
“当地时间”:“22:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月15日”,
“utc_时间”:“06:00”,
“当地时间”:“01:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月15日”,
“utc_时间”:“09:00”,
“当地时间”:“04:00”
},
{
“精确数据”:0.0,
“日期”:“2021年5月15日”,
“utc_时间”:“12:00”,
“当地时间”:“07:00”
}
]
}
如何迭代此输出并创建一个新的数据帧,如下所示:
(并仅获取日期、UTC时间小时和雨量值)
日期
00:00准时到达
3点准时到达
...
2021年5月12日
无效的
无效的
...
2021年5月13日
0
0.009
...
2021年5月14日
0.016
0.035
...
...
...
...
...
如果可以将json读入数据帧,则可以执行以下操作:
data = '''{
"data": [
{
"precip_data": 0.0,
"date": "May 12, 2021",
"utc_time": "15:00",
"local_time": "10:00"
},
{
"precip_data": 0.0,
"date": "May 12, 2021",
"utc_time": "18:00",
"local_time": "13:00"
},
{
"precip_data": 0.0,
"date": "May 12, 2021",
"utc_time": "21:00",
"local_time": "16:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "00:00",
"local_time": "19:00"
},
{
"precip_data": 0.0099999998,
"date": "May 13, 2021",
"utc_time": "03:00",
"local_time": "22:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "06:00",
"local_time": "01:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "09:00",
"local_time": "04:00"
},
{
"precip_data": 0.0,
"date": "May 13, 2021",
"utc_time": "12:00",
"local_time": "07:00"
},
{
"precip_data": 0.00084472657,
"date": "May 13, 2021",
"utc_time": "15:00",
"local_time": "10:00"
},
{
"precip_data": -0.0011035156,
"date": "May 13, 2021",
"utc_time": "18:00",
"local_time": "13:00"
},
{
"precip_data": 0.099999994,
"date": "May 13, 2021",
"utc_time": "21:00",
"local_time": "16:00"
},
{
"precip_data": 0.016948242,
"date": "May 14, 2021",
"utc_time": "00:00",
"local_time": "19:00"
},
{
"precip_data": 0.035,
"date": "May 14, 2021",
"utc_time": "03:00",
"local_time": "22:00"
},
{
"precip_data": 0.0,
"date": "May 14, 2021",
"utc_time": "06:00",
"local_time": "01:00"
},
{
"precip_data": 0.0,
"date": "May 14, 2021",
"utc_time": "09:00",
"local_time": "04:00"
},
{
"precip_data": -0.0011035156,
"date": "May 14, 2021",
"utc_time": "12:00",
"local_time": "07:00"
},
{
"precip_data": 0.0019482422,
"date": "May 14, 2021",
"utc_time": "15:00",
"local_time": "10:00"
},
{
"precip_data": 0.006948242,
"date": "May 14, 2021",
"utc_time": "18:00",
"local_time": "13:00"
},
{
"precip_data": -0.0030517578,
"date": "May 14, 2021",
"utc_time": "21:00",
"local_time": "16:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "00:00",
"local_time": "19:00"
},
{
"precip_data": 0.039999999,
"date": "May 15, 2021",
"utc_time": "03:00",
"local_time": "22:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "06:00",
"local_time": "01:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "09:00",
"local_time": "04:00"
},
{
"precip_data": 0.0,
"date": "May 15, 2021",
"utc_time": "12:00",
"local_time": "07:00"
}
]
}'''
jdata = json.loads(data)
df = pd.json_normalize(jdata['data'])
df.drop('local_time', axis=1, inplace=True)
df.set_index('date', inplace=True)
df_pivot = df.pivot(columns=['utc_time'])
输出
precip_data
utc_time 00:00 03:00 06:00 09:00 12:00 15:00 18:00 21:00
date
May 12, 2021 NaN NaN NaN NaN NaN 0.000 0.000 0.000
May 13, 2021 0.000 0.010 0.000 0.000 0.000 0.001 -0.001 0.100
May 14, 2021 0.017 0.035 0.000 0.000 -0.001 0.002 0.007 -0.003
May 15, 2021 0.000 0.040 0.000 0.000 0.000 NaN NaN NaN