Python - 用于过滤 http 响应的矢量化操作 json

Python - Vectorized operation to filter http response json

我有一个列表,基本上包含在 HTTP 响应中接收到的数据对象的某些键 (json)

让列表类似于

 ['uid', 'status', 'profile.name', 'profile.login', 'profile.mobile']

我正在解析一个嵌套的 json 类似-

{
    "uid":"a1234",
    "status":active,
    "native":false,
    "profile":{
                 "name": "xyz",
                 "alias": "z",
                 "login": "abc",
              }

}

在上面 json 上使用 pandas.json_normalise() 会给我一个类似

的数据框
        uid     status     native     profile.name     profile.alias     profile.login
    
   0    a1234   active     false      xyz              z                 abc 

现在我如何使用上面的列表并创建一个新的列表或数据框(都可以)以根据第一个列表保留响应中的值,同时处理 http 响应中不存在的任何值 json作为 NA 或“”。 期望得到像 -

这样的列表或数据框
['a1234', 'active', 'xyz', 'abc', '']

        uid     status     profile.name     profile.login    profile.mobile
    
   0    a1234   active     xyz              abc              "" 

目前我正在遍历第一个列表来实现此目的,但速度较慢,我可以使用矢量化操作来加快此过程吗?

IIUC,你可以这样使用reindex

print(pd.json_normalize(js) # js is my json
        .reindex(columns=['uid', 'status', 'profile.name', 
                          'profile.login', 'profile.mobile'])
        .fillna(''))
#      uid  status profile.name profile.login profile.mobile
# 0  a1234  active          xyz           abc