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
我有一个列表,基本上包含在 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