[英]Convert pandas dataframe columns into nested python dictionary
我想用 pandas 數據框第 2 列(源)和第 3 列(描述)創建 python 字典,並按第 1 列(標題)分組另外,我想獲取僅提供的標題標題 = ['test1','test2' ]
title source description
1 Test1 ABC description1
2 Test2 ABC description2
3 Test2 DEF description3
4 Test3 XYZ description4
output = {'Test1':{'ABC':'description1'},'Test2':{'ABC':'description2':'DEF':'description3'}
首先將boolean indexing
與Series.isin
用於過濾器,然后將GroupBy.apply
與 lambda function 用於字典Series
和最后一個Series.to_dict
。
titles = ['Test1','Test2']
d = (df[df['title'].isin(titles)]
.groupby('title')[['source','description']]
.apply(lambda x: dict(x.to_numpy()))
.to_dict())
print (d)
{'Test1': {'ABC': 'description1'}, 'Test2': {'ABC': 'description2', 'DEF': 'description3'}}
您可以按 dataframe w.r.t 分組。 標題,然后使用 python zip function 創建帶有源和描述的內部字典。 請在下面找到相同的代碼。
final_dict=dict()
all_groups = df.groupby('title')
for title in titles:
title_group = all_groups.get_group(title)
source_desc=dict(zip(title_group.source, title_group.description))
final_dict[title_group] = source_desc
print(final_dict)
嘗試這個,
result = {}
filter_ = ['Test1','Test2']
for x in df[df['title'].isin(filter_)].to_dict(orient='records'):
result.setdefault(x['title'], {}).update({x['source']: x['description']})
{'Test1': {'ABC': 'description1'}, 'Test2': {'ABC': 'description2', 'DEF': 'description3'}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.