我有 JSON 檔案,其中包含許多嵌套字典/多余資訊串列,我在創建資料框時不想使用這些資訊。我洗掉或替換為“---”的所有不必要的絨毛。
{'ID': 1,
'SPEC': {'Name': 'STOCK_VAL',
'---': '---',
'---': '---',
'Info': {'---': [{'---': '---', '---': '---', '---': '---'}],
'---': [{'---': '---', '---': '---', '---': '---'}]},
'---': '---',
'RELEVANT_AFTER_ALL': [{'---': '---',
'Max': 140.00,
'Min': 100.00,
'---': '---',
'Name': 'Calculated',
'Units': 'USD/D',
'---': '---',
'Entries': [{'Timestamp': '2022-03-16T23:00:00Z', 'Value': 100.00},
{'Timestamp': '2022-03-17T23:00:00Z', 'Value': 120.00},
{'Timestamp': '2022-03-18T23:00:00Z', 'Value': 140.00}],
'---': '---'},
{'---': '---',
'Max': 160.00,
'Min': 80.00,
'---': '---',
'Name': 'Realised',
'Units': 'USD/D',
'---': '---',
'Entries': [{'Timestamp': '2022-03-16T23:00:00Z', 'Value': 160.00},
{'Timestamp': '2022-03-17T23:00:00Z', 'Value': 120.00},
{'Timestamp': '2022-03-18T23:00:00Z', 'Value': 80.00}],
'---': '---'}]}}
根據上面的資料,我想創建以下資料框:
| 時間戳 | STOCK_VAL 已計算 | STOCK_VAL 已實作 |
|---|---|---|
| 2022-03-16T23:00:00Z | 100.00 | 160.00 |
| 2022-03-17T23:00:00Z | 120.00 | 120.00 |
| 2022-03-18T23:00:00Z | 140.00 | 80.00 |
我曾嘗試使用 pandas.json_normalize() 但未能提取表格,因為我希望它以有效的方式制作。
提前感謝任何知道更好的人!
uj5u.com熱心網友回復:
'---'畢竟,您替換的字串之一是相關的。
首先我們找到資料所在的陣列。這個陣列的每一項都應該是一個系列,我們可以從中構建一個資料框。
import pandas as pd
table_data = data['SPEC']['RELEVANT_AFTER_ALL']
x = pd.DataFrame({
f"STOCK_VAL {item['Name']}": pd.DataFrame(item['Entries']).set_index('Timestamp').squeeze()
for item in table_data
})
編輯:替換pd.json_normalize為pd.DataFrame,在這種情況下就足夠了。
編輯 2:添加STOCK_VAL到列名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452087.html
