我有一个 json 响应,如下所示。
['{"accountNumber":"2130005","billDayModelName":"","billDayModelScore":"0","defaultBadWriteOffModelName":"XYZ","defaultBadWriteOffModelScore":600.677286,"accountModelName":"","accountModelScore":"0","customerModelName":"","customerModelScore":"0","accountRiskCode":"","customerRiskCode":""}', '{"ACCTNBR":"2130005","PREV3MOTOTAMT":0,"PREV3CALL":1,"DAY_SYNC":4,"STD_DVTN":79.72,"MNTHCNT":2,"AVG_AMT":0,"PMT_CNT":0}', '[{"ACCT_NBR":2130005,"ACCOUNT_SCORE":0.8,"BHVR_SCR":380}]']
希望将所有值添加到 pandas 数据框中,其中包含各个列名称以及响应中的值。
有没有办法在单个数据框中传递所有具有值的列
由于 json 响应中有一个列表,因此需要将其展平:
import pandas as pd
import json
json_response = [
'{"accountNumber":"2130005","billDayModelName":"","billDayModelScore":"0","defaultBadWriteOffModelName":"XYZ","defaultBadWriteOffModelScore":600.677286,"accountModelName":"","accountModelScore":"0","customerModelName":"","customerModelScore":"0","accountRiskCode":"","customerRiskCode":""}',
'{"ACCTNBR":"2130005","PREV3MOTOTAMT":0,"PREV3CALL":1,"DAY_SYNC":4,"STD_DVTN":79.72,"MNTHCNT":2,"AVG_AMT":0,"PMT_CNT":0}',
'[{"ACCT_NBR":2130005,"ACCOUNT_SCORE":0.8,"BHVR_SCR":380}]'
]
dicts = [json.loads(item) for item in json_response if item.startswith('{')]
list_of_dicts = [json.loads(item) for item in json_response if item.startswith('[')]
for item in list_of_dicts:
dicts.extend(item)
df = pd.DataFrame(dicts)
print(df)
这是
accountNumber billDayModelName billDayModelScore \
0 2130005 0
1 NaN NaN NaN
2 NaN NaN NaN
defaultBadWriteOffModelName defaultBadWriteOffModelScore accountModelName \
0 XYZ 600.677286
1 NaN NaN NaN
2 NaN NaN NaN
accountModelScore customerModelName customerModelScore accountRiskCode ... \
0 0 0 ...
1 NaN NaN NaN NaN ...
2 NaN NaN NaN NaN ...
PREV3MOTOTAMT PREV3CALL DAY_SYNC STD_DVTN MNTHCNT AVG_AMT PMT_CNT \
0 NaN NaN NaN NaN NaN NaN NaN
1 0.0 1.0 4.0 79.72 2.0 0.0 0.0
2 NaN NaN NaN NaN NaN NaN NaN
ACCT_NBR ACCOUNT_SCORE BHVR_SCR
0 NaN NaN NaN
1 NaN NaN NaN
2 2130005.0 0.8 380.0
[3 rows x 22 columns]