我正在嘗試轉換由 groupby([columns]) 產生的 pandas 資料框。對于每個“target_index”,生成的索引將具有不同的單詞串列(下圖中的示例)。用 to_dict() 轉換它似乎不能直接作業(我嘗試了幾個 orient 引數)。
輸入資料框:

所需的輸出(示例中只有兩個鍵):
{
"2060": {
"NOUN": ["product"]
},
"3881": {
"ADJ": ["greater", "direct", "raw"],
"NOUN": ["manufacturing", "capital"],
"VERB": ["increased"]
}
}
為了重新創建以下資料集:
df= pd.DataFrame([
["2060", "NOUN", ["product"]],
["2060", "ADJ", ["greater"]],
["3881", "NOUN", ["manufacturing", "capital"]],
["3881", "ADJ", ["greater", "direct", "raw"]],
["3881", "VERB", ["increased"]]
], columns= ["a", "b", "c"])
df= df.groupby(["a", "b"]).agg({"c": lambda x: x})
uj5u.com熱心網友回復:
建構式中給出的輸入與影像中的不同。我在建構式中使用了輸入。您可以在 groupby.apply 中使用 lambda 將每個組轉換為字典,然后將聚合轉換為字典:
out = df.groupby(level=0).apply(lambda x: x.droplevel(0).to_dict()['c']).to_dict()
另一種選擇是使用 itertuples 和 dict.setdefault:
out = {}
for (ok, ik), v in df.itertuples():
out.setdefault(ok, {}).setdefault(ik, []).extend(v)
輸出:
{'2060': {'ADJ': ['greater'], 'NOUN': ['product']},
'3881': {'ADJ': ['greater', 'direct', 'raw'],
'NOUN': ['manufacturing', 'capital'],
'VERB': ['increased']}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465149.html
上一篇:如何更新Python字典中的值?
下一篇:洗掉嵌套字典的鍵值對
