所以,我試圖從 API 收集資料來制作資料框。問題是,當我在 JSON 中獲得回應時,某些行缺少某些值。這意味著一行包含 10 個值中的所有 10 個值,有些只有 10 個值中的 8 個。例如,我有這樣的代碼來填充來自 API 的資料,然后形成一個 DataFrame:
response = r.json()
cols = ['A', 'B', 'C', 'D']
l = []
for entry in response:
l.append([
entry['realizationreport_id'],
entry['suppliercontract_code'],
entry['rid'],
entry['ppvz_inn'],
我收到此錯誤是因為在其中一行中,API 沒有給出回應值:
KeyError: 'ppvz_inn'
所以我正在嘗試修復它,以便如果 API 沒有此特定行的值,則 DataFrame 的單元格填充為 0 或 Nan
l = []
for entry in response:
l.append([
entry['realizationreport_id'],
entry['suppliercontract_code'],
entry['rid'],
entry['ppvz_inn'],
try:
entry['ppvz_supplier_name'],
except KeyError:
'0',
現在我收到這個錯誤:
try:
^
SyntaxError: invalid syntax
如何實際使其作業并在沒有資料的情況下填充這些單元格?
uj5u.com熱心網友回復:
你不能try-except在你的append陳述中間有一個陳述。
您可以使用if陳述句或首先嘗試通過填充空值來修復 JSON 資料。您也可以使用setdefault,請在此處查看有關它的一些資訊。
uj5u.com熱心網友回復:
使用collections.defaultdict. 它是 dict 的子類,它不回傳 KeyError,而是創建一個被呼叫的鍵。您可以使用解包將現有的 dict 轉換為 defaultdict。
for entry in response:
entry_defaultdict = defaultdict(list, **entry)
在這種情況下,每次呼叫不存在的物件都會創建一個空串列作為鍵的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398833.html
