繁体   English   中英

df.to_dict 将重复索引(熊猫)作为嵌套字典中的主键

[英]df.to_dict make duplicated index (pandas) as primary key in a nested dict

我有这个数据框,我想将其转换为 python 中的字典,我还有许多其他类别,但为简单起见只显示了两个

Category   Name                     Description             Price       
Diesel     Land Rover               No Description found    £ x
Electric   Tesla Model X            No Description found    £ x

我希望 output 是这样的

dict = {"Category": {"Diesel" : {
                                "Name": "Land Rover", 
                                "Description":"No Description Found", 
                                "Price": "£ x" },
                                           
                    "Electric" : {"Name": "Tesla Model X", 
                                  "Description":"No Description Found", 
                                  "Price": "£ x" }
                    }               
        }

您可以首先为每条记录创建一个字典,然后按类别分组以创建所需的最终字典格式。

df['dict'] = df[['Name', 'Description', 'Price']].to_dict("records")

dictionary = dict()
dictionary['Category'] = df.groupby('Category')['dict'].apply(list).to_dict()

您可以在不分配额外的列或使用list聚合的情况下执行此操作:

def collect(category):
  return category[['Name', 'Description', 'Price']].to_dict('records')

data = {'Category': df.groupby('Category').apply(collect).to_dict()}

为了便于阅读,我创建了一个单独的 function - 当然,您也可以将其作为 lambda 传递:

{
  'Category': df.groupby('Category').apply(
    lambda x: x[['Name', 'Description', 'Price']].to_dict('records')).to_dict()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM