Python 将数据帧转换为字典字典
我有一个数据框,其中有两个产品的属性和值Python 将数据帧转换为字典字典,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,其中有两个产品的属性和值 PRODUCT ATTRIBUTE VALUES prod1 Attr1 A prod1 Attr2 B prod1 Attr3 C prod1 Attr4 D prod2 Attr1 E prod2 Attr2 F prod2 Attr3 G prod2 Attr4 H 如何将其转换为一个
PRODUCT ATTRIBUTE VALUES
prod1 Attr1 A
prod1 Attr2 B
prod1 Attr3 C
prod1 Attr4 D
prod2 Attr1 E
prod2 Attr2 F
prod2 Attr3 G
prod2 Attr4 H
如何将其转换为一个字典列表,该列表如下所示:
{'prod1':[{'Attr1':A, 'Attr2':B, 'Attr3':C, 'Attr4':D}], 'prod2':[{'Attr1':E, 'Attr2':F, 'Attr3':G, 'Attr4':H}]}
您可以与应用一起使用
:
d = df.groupby('PRODUCT').apply(lambda x: [dict(zip(x.ATTRIBUTE, x.VALUES))]).to_dict()
print (d)
{'prod1': [{'Attr1': 'A', 'Attr2': 'B', 'Attr3': 'C', 'Attr4': 'D'}],
'prod2': [{'Attr1': 'E', 'Attr2': 'F', 'Attr3': 'G', 'Attr4': 'H'}]}
您可以使用准备数据,然后拨打:
我还假设您实际上不需要一个元素列表。在这种情况下,您可以得到非常简单的解决方案。如果您需要这些列表,那么最好使用@jezrael answerPivot并使用to_dict方法,然后将内部dict包装在一个列表中
d= df.pivot(index='PRODUCT', columns='ATTRIBUTE', values='VALUES').to_dict()
{key:[value] for key,value in d.items()}
理解力
{k: [v.to_dict()] for k, v in df.set_index(['PRODUCT', 'ATTRIBUTE']).VALUES.unstack(0).iteritems()}
{'prod1': [{'Attr1': 'A', 'Attr2': 'B', 'Attr3': 'C', 'Attr4': 'D'}],
'prod2': [{'Attr1': 'E', 'Attr2': 'F', 'Attr3': 'G', 'Attr4': 'H'}]}
你能展示一下你所尝试的吗?你需要数据透视。可能重复@ChrisBeard。我的问题不同,我知道如何使用to_dict()函数,但这个问题首先需要某种透视。非常酷!非常感谢你的回答。工作太棒了!如果我的答案或其他答案有用,别忘了。谢谢
{k: [v.to_dict()] for k, v in df.set_index(['PRODUCT', 'ATTRIBUTE']).VALUES.unstack(0).iteritems()}
{'prod1': [{'Attr1': 'A', 'Attr2': 'B', 'Attr3': 'C', 'Attr4': 'D'}],
'prod2': [{'Attr1': 'E', 'Attr2': 'F', 'Attr3': 'G', 'Attr4': 'H'}]}