[英]Split out nested json/dictionary from Pandas dataframe into separate columns
我有一个我找不到解决方案的问题 - 所以这里是寻求帮助的请求。
我从一个看起来像这样的数据库收到一个导出(当然,实际上不止一行):
"created_at","country","query_success","query_result"
"2022-08-18 08:38:38","Germany",True,"{""servers"": {""windows"": 0, ""linux"": 0}, ""workstations"": {""windows"": 0, ""mac"": 0}}"
我以这种方式将其导入 Pandas:
df = pd.read_csv('data.csv', index_col='created_at', parse_dates=True)
这变成了这样:
created_at country query_success query_result
2022-08-18 08:38:38 Germany True {"servers": {"windows": 0, "linux": 0}, "workstations": {"windows": 0, "mac": 0}}
我要解决的问题是填充query_result
列的 json/字典。
我想做的是根据这些数据创建和填充四个新列。
server_windows
server_linux
workstation_windows
workstation_mac
我已经做了一些谷歌搜索,并看到了一些使用ast
模块但似乎无法正确使用的解决方案。 可能是因为它是两个嵌套的字典/json结构?
感谢任何帮助/协助。
尝试:
import json
dfs = pd.concat([pd.json_normalize(json.loads(d)) for d in df["query_result"]])
dfs = pd.DataFrame(dfs.values, columns=dfs.columns, index=df.index)
df = pd.concat([df, dfs], axis=1)
df.pop("query_result")
print(df.to_markdown())
印刷:
created_at | 国家 | 查询成功 | 服务器.windows | 服务器.linux | 工作站。windows | 工作站.mac |
---|---|---|---|---|---|---|
2022-08-18 08:38:38 | 德国 | 真的 | 0 | 0 | 0 | 0 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.