将dataframe列转换为嵌套python字典

2024-09-30 00:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用pandas数据框第2列(源代码)和第3列(说明)以及按第1列分组(标题)创建python字典 另外,我希望只获取提供的标题的值 标题=['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'}

Tags: 数据标题pandas字典源代码titledefabc
3条回答

您可以按dataframe w.r.t.标题分组,然后使用python zip函数创建包含源代码和描述的内部字典。请查找以下相同的代码

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'}}

首先使用^{}^{}作为过滤器,然后使用^{}和lambda函数作为DICT的Series和最后一个^{}

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'}}

相关问题 更多 >

    热门问题