当键是一个字节时,从 python 中的字典创建数据帧?

Create dataframe from a dictionary in python when the key is a byte?

我想从字典中的特定数据创建数据框。关键是一个字节,我不明白如何“以有用的方式从字节中获取信息”。如果我能将我需要的数据放入数据框中,我就会知道如何处理它(排序、绘图等)

我有这本字典:

{'SequenceNumber': 2654504175, 'Offset': '67826126730624', 'EnqueuedTimeUtc': '7/10/2020 1:18:00 PM', 'SystemProperties': {}, 'Properties': {}, 'Body': b'{"id": "MicroSCADA OPC DA.S_M.APL.1.P.P_R_P.1", "ts": "2020-07-10T13:17:24.654000", "value": 1.1293551921844482, "status_code": 0}'}

这是读取avro文件中一个数据点的结果。我需要的数据在'Body'.

里面

我去:

x=my_dict.get("Body)

结果是:

b'{"id": "MicroSCADA OPC DA.S_M.APL.1.P.P_R_P.1", "ts": "2020-07-10T13:17:24.654000", "value": 1.1293551921844482, "status_code": 0}'

我想将数据分类为具有“id”、“ts”、“value”和“status code”列的数据框。我该怎么做?

我也试过pandavro,但是byte还是把我需要的数据“锁”在一起了。我已经尝试将字节转换为字符串,但是键和它的值自然不再属于一起了。

如何以最好的方式解决这个问题?

将字节字符串转换为字符串,对其求值并将其转换为数据帧:

dic = {'SequenceNumber': 2654504175, 'Offset': '67826126730624', 'EnqueuedTimeUtc': '7/10/2020 1:18:00 PM', 'SystemProperties': {}, 'Properties': {}, 'Body': b'{"id": "MicroSCADA OPC DA.S_M.APL.1.P.P_R_P.1", "ts": "2020-07-10T13:17:24.654000", "value": 1.1293551921844482, "status_code": 0}'}

d = eval(dic["Body"].decode("utf-8"))

df = pd.DataFrame([list(d.values())],columns = list(d.keys()))

df

输出:

    id                                      ts                          value    status_code
0   MicroSCADA OPC DA.S_M.APL.1.P.P_R_P.1   2020-07-10T13:17:24.654000  1.129355    0