我有一个我转换为JSON的REST调用的输出。
这是字典和列表的高度嵌套集合,但是我最终可以将其转换为数据框,如下所示:
import panads as pd
from requests import get
url = 'http://stats.oecd.org/SDMX-JSON/data/MEI_FIN/IR3TIB.GBR+USA.M/all'
params = {
'startTime' : '2008-06',
'dimensionAtObservation' : 'TimeDimension'
}
r = get(url, params = params)
x = r.json()
d = x['dataSets'][0]['series']
a = pd.DataFrame(d['0:0:0']['observations'])
b = pd.DataFrame(d['0:1:0']['observations'])
这项工作没有进行一些操作即可使其更容易使用,并且由于存在多个时间序列,因此我可以为每个时间序列创建一个相同的版本,但这毋庸置疑,这有点笨拙。
是否有更好/更清洁的方法来执行此操作。
答案 0 :(得分:0)
没有任何答复,这是我想出的解决方案。我添加了一个列表推导,以处理将每个系列放入一个数据帧中,然后进行转置,因为此源导致该系列跨行而不是向下对齐。
import panads as pd
from requests import get
url = 'http://stats.oecd.org/SDMX-JSON/data/MEI_FIN/IR3TIB.GBR+USA.M/all'
params = {
'startTime' : '2008-06',
'dimensionAtObservation' : 'TimeDimension'
}
r = get(url, params = params)
x = r.json()
d = x['dataSets'][0]['series']
df = [pd.DataFrame(d[i]['observations']).loc[0] for i in d]
df = pd.DataFrame(df).T
答案 1 :(得分:0)
pandasdmx
库使这个超级简单:
msg.payload = [0, 16833];
let pay = msg.payload;
const buf = Buffer.allocUnsafe(4);
buf.writeUInt16BE(pay[0],2);
buf.writeUInt16BE(pay[1],0);
msg.payload = buf.readFloatBE(0);
return msg;enter code here