簡體   English   中英

如何將 dataframe 轉換為嵌套字典?

[英]How to convert dataframe to nested dictionary?

我正在運行 Python 3.7 和 Pandas 1.1.3 並有一個 DataFrame 看起來像這樣:

location = {'city_id': [22000,25000,27000,35000],
        'population': [3971883,2720546,667137,1323],
        'region_name': ['California','Illinois','Massachusetts','Georgia'],
        'city_name': ['Los Angeles','Chicago','Boston','Boston'],
        }

df = pd.DataFrame(location, columns = ['city_id', 'population','region_name', 'city_name'])

我想將此 dataframe 轉換為如下所示的字典:

{
'Boston': {'Massachusetts': 27000, 'Georgia': 35000},
 'Chicago': {'Illinois': 25000},
 'Los Angeles': {'California': 22000}
}

而如果同一個城市在不同地區,嵌套的JSON應該按人口排序(比如波士頓在馬薩諸塞州和喬治亞州。馬薩諸塞州的城市比較大,我們先output吧。

我的代碼是:

result = df = df.groupby(['city_name'])[['region_name','city_id']].apply(lambda x: x.set_index('region_name').to_dict()).to_dict()

Output:

{'Boston': {'city_id': {'Massachusetts': 27000, 'Georgia': 35000}},
 'Chicago': {'city_id': {'Illinois': 25000}},
 'Los Angeles': {'city_id': {'California': 22000}}}

你怎么能看到字典添加鍵 - “city_id”

請告訴我,我應該如何更改獲得預期結果的代碼?

只是方法鏈apply()方法到您當前的解決方案:

result=df.groupby(['city_name'])[['region_name','city_id']].apply(lambda x: x.set_index('region_name').to_dict()).apply(lambda x:list(x.values())[0]).to_dict()

現在,如果您打印result ,您將獲得預期的 output:

{'Boston': {'Massachusetts': 27000, 'Georgia': 35000},
 'Chicago': {'Illinois': 25000},
 'Los Angeles': {'California': 22000}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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