将 api 输出的所有响应插入具有单独列名称的 pandas 数据帧

问题描述 投票:0回答:1

我有一个 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 python-3.x pandas dataframe
1个回答
0
投票

由于 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]
© www.soinside.com 2019 - 2024. All rights reserved.