簡體   English   中英

將嵌套的 json/字典從 Pandas dataframe 拆分為單獨的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM