【发布时间】:2020-08-06 00:10:19
【问题描述】:
我有一个包含一些时间序列数据的大型嵌套字典,我的目标是提取这些时间序列数据。我能够进行一些基本的字典导航,但是所有这些不同的数据类型彼此之间真的让我很失望。这是一个带有嵌套字典的 MWE,其中包含来自 2 个不同监测站点的日期时间数据和降水数据。最终,我想将它们与任意数量的监控站点一起绘制。
在这里,我尽我所能将字典中的数据放入一个 numpy 数组,然后放入一个 pandas 数据框。但是,您会看到,数据框每个站点有一行,一列包含每个站点的 precip 数组。我希望它显示与数据值相同的列数。这是实现目标的最佳方式吗?如果是,如何更改列数?
import numpy as np
import pandas as pd
no_stations = 2
my_dict = {
"UNITS":{
"precipitation":"Inches"
},
"STATION": [
{'STATUS': 'ACTIVE',
'NAME' : 'STATION 1',
'ELEVATION': '758',
'OBSERVATIONS': {'date_time': [
'2020-04-13T13:00:00Z', '2020-04-13T14:00:00Z', '2020-04-13T15:00:00Z',
'2020-04-13T16:00:00Z', '2020-04-13T17:00:00Z', '2020-04-13T18:00:00Z',
'2020-04-13T19:00:00Z', '2020-04-13T20:00:00Z', '2020-04-13T21:00:00Z',
'2020-04-13T22:00:00Z', '2020-04-13T23:00:00Z', '2020-04-14T00:00:00Z',
'2020-04-14T01:00:00Z', '2020-04-14T02:00:00Z', '2020-04-14T03:00:00Z',
'2020-04-14T04:00:00Z', '2020-04-14T05:00:00Z', '2020-04-14T06:00:00Z',
'2020-04-14T07:00:00Z', '2020-04-14T08:00:00Z', '2020-04-14T09:00:00Z',
'2020-04-14T10:00:00Z', '2020-04-14T11:00:00Z', '2020-04-14T12:00:00Z',
'2020-04-14T13:00:00Z', '2020-04-14T14:00:00Z', '2020-04-14T15:00:00Z',
'2020-04-14T16:00:00Z', '2020-04-14T17:00:00Z', '2020-04-14T18:00:00Z'],
'precip_accum_set_1': [
0.0, 0.0, 0.0, 0.254, 1.27, 2.794, 4.064, 5.588, 6.858, 8.89, 10.922,
12.192, 12.954, 13.716, 15.24, 18.034, 18.288, 18.288, 18.288, 20.32,
22.606, 24.892, 25.908, 26.924, 27.432, 27.686, 27.686,
27.686, 27.686, 27.94]}},
{'STATUS': 'ACTIVE',
'NAME' : 'STATION 2',
'ELEVATION': '500',
'OBSERVATIONS': {'date_time': [
'2020-04-13T13:00:00Z', '2020-04-13T14:00:00Z', '2020-04-13T15:00:00Z',
'2020-04-13T16:00:00Z', '2020-04-13T17:00:00Z', '2020-04-13T18:00:00Z',
'2020-04-13T19:00:00Z', '2020-04-13T20:00:00Z', '2020-04-13T21:00:00Z',
'2020-04-13T22:00:00Z', '2020-04-13T23:00:00Z', '2020-04-14T00:00:00Z',
'2020-04-14T01:00:00Z', '2020-04-14T02:00:00Z', '2020-04-14T03:00:00Z',
'2020-04-14T04:00:00Z', '2020-04-14T05:00:00Z', '2020-04-14T06:00:00Z',
'2020-04-14T07:00:00Z', '2020-04-14T08:00:00Z', '2020-04-14T09:00:00Z',
'2020-04-14T10:00:00Z', '2020-04-14T11:00:00Z', '2020-04-14T12:00:00Z',
'2020-04-14T13:00:00Z', '2020-04-14T14:00:00Z', '2020-04-14T15:00:00Z',
'2020-04-14T16:00:00Z', '2020-04-14T17:00:00Z', '2020-04-14T18:00:00Z'],
'precip_accum_set_1': [
49.53, 49.53, 49.53, 50.038, 51.054, 52.324,53.594, 54.864, 56.134,
59.944, 61.214, 61.722,62.484, 64.008, 66.802, 67.056, 67.056, 67.31,
69.088, 71.628, 74.168, 75.184, 75.946, 76.454,76.708,
76.708, 76.708, 76.708, 76.708]}}
]
}
for key, value in my_dict.items():
print(key)
print(type(value))
precip = np.empty([no_stations], dtype=object)
dates = np.empty([no_stations], dtype=object)
for ii in range(no_stations):
precip[ii] = my_dict['STATION'][ii]['OBSERVATIONS']['precip_accum_set_1']
dates[ii] = my_dict['STATION'][ii]['OBSERVATIONS']['date_time']
precip[ii] = np.array(precip[ii], dtype = float)
dates[ii] = np.array(dates[ii], dtype = str)
df = pd.DataFrame(precip)
print(df)
【问题讨论】:
-
请发布您的预期输出
标签: python pandas dictionary nested