首页 > 解决方案 > 将 Python DataFrame 转换为字典列表

问题描述

我有一个数据框,想将其转换为字典列表。我read_csv()用来创建这个数据框。数据框如下所示:

             AccountName AccountType  StockName Allocation
          0  MN001       #1           ABC       0.4
          1  MN001       #1           ABD       0.6
          2  MN002       #2           EFG       0.5
          3  MN002       #2           HIJ       0.4
          4  MN002       #2           LMN       0.1 

所需的输出:

   [{'ABC':0.4, 'ABD':0.6}, {'EFG':0.5, 'HIJ':0.4,'LMN':0.1}]

我曾尝试研究类似的主题并使用该Dataframe.to_dict()功能。我期待着完成这件事。非常感谢您的帮助!

标签: pythonpandasdataframedictionary

解决方案


import pandas as pd 
import numpy as np 

d = np.array([['MN001','#1','ABC', 0.4],
                ['MN001','#1','ABD', 0.6],
                ['MN002', '#2', 'EFG', 0.5],
                ['MN002', '#2', 'HIJ', 0.4],
                ['MN002', '#2', 'LMN', 0.1]])  
df = pd.DataFrame(data=d, columns = ['AccountName','AccountType','StockName', 'Allocation'])

by_account_df = df.groupby('AccountName').apply(lambda x : dict(zip(x['StockName'],x['Allocation']))).reset_index(name='dic'))
by_account_lst = by_account_df['dic'].values.tolist()

结果应该是:

print(by_account_lst)
[{'ABC': '0.4', 'ABD': '0.6'}, {'EFG': '0.5', 'HIJ': '0.4', 'LMN': '0.1'}]

推荐阅读