我想从同一个 json 中过滤不同的字段并将它们组织为表格,我该怎么做? 我需要 PANDAS Dataframes 的响应。
我有以下 JSON:
{
"jobIds": ["78321e6f-2030-4c7c-a6d3-ee3363e2b8fe"],
"results": [
{
"jobId": "78321e6f-2030-4c7c-a6d3-ee3363e2b8fe",
"result": {
"data": {
"timestamp": "2023-08-16T19:49:00.589Z",
"rootActivityId": "5f99b36b-13c6-4e6e-9625-90a01455c0f2",
"descriptor": {
"Select": [
{
"Kind": 1,
"Depth": 0,
"Value": "G0",
"GroupKeys": [
{
"Source": {
"Entity": "DM_TEMPO",
"Property": "NOM_MES_ABREV"
},
"Calc": "G0",
"IsSameAsSelect": true
}
],
"Name": "DM_TEMPO.NOM_MES_ABREV"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G1",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "QTD_PRODUTO"
},
"Calc": "G1",
"IsSameAsSelect": true
}
],
"Name": "Sum((Movimento) - FT_SDL_MOVIMENTO.QTD_PRODUTO)"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G2",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "COD_OPERACAO"
},
"Calc": "G2",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.COD_OPERACAO"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G3",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "COD_INSTALACAO_ORIG"
},
"Calc": "G3",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.COD_INSTALACAO_ORIG"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G4",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_UF_ORIG"
},
"Calc": "G4",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.SIG_UF_ORIG"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G5",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_REGIAO_ORIG"
},
"Calc": "G5",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.SIG_REGIAO_ORIG"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G6",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "RAZAO_SOCIAL_DEST"
},
"Calc": "G6",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.RAZAO_SOCIAL_DEST"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G7",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_UF_DEST"
},
"Calc": "G7",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.SIG_UF_DEST"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G8",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_REGIAO_DEST"
},
"Calc": "G8",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.SIG_REGIAO_DEST"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G9",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "QUALIF_DEST"
},
"Calc": "G9",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.QUALIF_DEST"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G10",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "TIPO_EXTRACAO"
},
"Calc": "G10",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.TIPO_EXTRACAO"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G11",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C_UF"
},
"Calc": "G11",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.C_UF"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G12",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C_REGIAO"
},
"Calc": "G12",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.C_REGIAO"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G13",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C2_LOCALIZAÇÃO"
},
"Calc": "G13",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.C2_LOCALIZAÇÃO"
},
{
"Kind": 1,
"Depth": 0,
"Value": "G14",
"GroupKeys": [
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C_UF_Restrito"
},
"Calc": "G14",
"IsSameAsSelect": true
}
],
"Name": "(Movimento) - FT_SDL_MOVIMENTO.C_UF_Restrito"
}
],
"Expressions": {
"Primary": {
"Groupings": [
{
"Keys": [
{
"Source": {
"Entity": "DM_TEMPO",
"Property": "NOM_MES_ABREV"
},
"Select": 0
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "QTD_PRODUTO"
},
"Select": 1
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "COD_OPERACAO"
},
"Select": 2
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "COD_INSTALACAO_ORIG"
},
"Select": 3
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_UF_ORIG"
},
"Select": 4
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_REGIAO_ORIG"
},
"Select": 5
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "RAZAO_SOCIAL_DEST"
},
"Select": 6
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_UF_DEST"
},
"Select": 7
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "SIG_REGIAO_DEST"
},
"Select": 8
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "QUALIF_DEST"
},
"Select": 9
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "TIPO_EXTRACAO"
},
"Select": 10
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C_UF"
},
"Select": 11
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C_REGIAO"
},
"Select": 12
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C2_LOCALIZAÇÃO"
},
"Select": 13
},
{
"Source": {
"Entity": "(Movimento) - FT_SDL_MOVIMENTO",
"Property": "C_UF_Restrito"
},
"Select": 14
}
],
"Member": "DM0"
}
]
}
},
"Limits": { "Primary": { "Id": "L0", "Top": { "Count": 1000 } } },
"Version": 2
},
"metrics": {
"Version": "1.0.0",
"Events": [
{
"Id": "ca5e94f5-318e-4de3-8a88-e94cc1105181",
"Name": "Execute Semantic Query",
"Component": "DSE",
"Start": "2023-08-16T19:49:00.5899491Z",
"End": "2023-08-16T19:49:00.6524475Z"
},
{
"Id": "fb1cac7d-cf39-44b2-ac95-8db41fdcb6c4",
"ParentId": "ca5e94f5-318e-4de3-8a88-e94cc1105181",
"Name": "Execute DAX Query",
"Component": "DSE",
"Start": "2023-08-16T19:49:00.5899491Z",
"End": "2023-08-16T19:49:00.6524475Z",
"Metrics": { "RowCount": 4 }
},
{
"Id": "08875535-8F1B-41A6-9820-8DB70C25747B",
"ParentId": "fb1cac7d-cf39-44b2-ac95-8db41fdcb6c4",
"Name": "Execute Query",
"Component": "AS",
"Start": "2023-08-16T19:49:00.637Z",
"End": "2023-08-16T19:49:00.647Z"
},
{
"Id": "85BA220D-C873-4C33-BD39-258AF2B07039",
"ParentId": "08875535-8F1B-41A6-9820-8DB70C25747B",
"Name": "Serialize Rowset",
"Component": "AS",
"Start": "2023-08-16T19:49:00.647Z",
"End": "2023-08-16T19:49:00.647Z"
}
]
},
"fromCache": false,
"dsr": {
"Version": 2,
"MinorVersion": 1,
"DS": [
{
"N": "DS0",
"PH": [
{
"DM0": [
{
"S": [
{ "N": "G0", "T": 1, "DN": "D0" },
{ "N": "G1", "T": 3 },
{ "N": "G2", "T": 1, "DN": "D1" },
{ "N": "G3", "T": 1, "DN": "D2" },
{ "N": "G4", "T": 1, "DN": "D3" },
{ "N": "G5", "T": 1, "DN": "D4" },
{ "N": "G6", "T": 1, "DN": "D5" },
{ "N": "G7", "T": 1, "DN": "D6" },
{ "N": "G8", "T": 1, "DN": "D7" },
{ "N": "G9", "T": 1, "DN": "D8" },
{ "N": "G10", "T": 1, "DN": "D9" },
{ "N": "G11", "T": 1, "DN": "D10" },
{ "N": "G12", "T": 1, "DN": "D11" },
{ "N": "G13", "T": 1, "DN": "D12" },
{ "N": "G14", "T": 1, "DN": "D13" }
],
"C": [
0,
"0.0018000000000000002",
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
{
"C": ["0.0096499999999999989", 1, 1, 1, 1, 1],
"R": 30561
},
{ "C": [0.02252, 2, 2, 2], "R": 30581 },
{ "C": [0.02864, 2, 1, 3, 3], "R": 30521 }
]
}
],
"IC": true,
"HAD": true,
"ValueDicts": {
"D0": ["Jan"],
"D1": ["26", "15", "14"],
"D2": ["1038329", "1033638", "1232257"],
"D3": ["TO", "AM"],
"D4": ["N"],
"D5": [
"NÃO INFORMADO",
"CONSORCIO SANCHES TRIPOLONI-COEMA-PLANNUS"
],
"D6": ["TO", "AM", "RO", "RR"],
"D7": ["N"],
"D8": ["CONSUMIDOR FINAL"],
"D9": ["Dist"],
"D10": ["TO", "AM", "RO", "RR"],
"D11": ["N"],
"D12": ["NÃO INFORMADO"],
"D13": [
"Os dados por UF não estão disponíveis para este ano."
]
}
}
]
}
}
}
}
]
}
我尝试这个代码:
import json
import pandas as pd
with open('data.json', 'r') as json_file:
json_data = json.load(json_file)
value_dicts = json_data\["results"\]\[0\]\["result"\]\["data"\]\["dsr"\]\["DS"\]\[0\]\["ValueDicts"\]
max_length = max(len(values) for values in value_dicts.values()
for key in value_dicts.keys():
value_dicts\[key\] = value_dicts\[key\] + \[None\] \* (max_length - len(value_dicts\[key\]))
df = pd.DataFrame(value_dicts)
print(df)
我尝试在列中设置格式,但我认为有一种方法可以以不同类型过滤此对象
我假设这是 PowerBI 查询的输出是否正确?请添加有关源数据的更多详细信息以及您正在使用的查询。我相当有信心有一种更简单的方法可以实现这一点,例如直接从源将查询结果导出为 .csv 格式。如果您提供有关该过程的更多详细信息,我们可能可以为您提供帮助。至于目前的问题,该 .json 文件中没有足够的信息来重建表。