第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將 Python DataFrame 轉(zhuǎn)換為字典列表

將 Python DataFrame 轉(zhuǎn)換為字典列表

森林海 2021-11-23 19:26:29
我有一個(gè)數(shù)據(jù)框,想將其轉(zhuǎn)換為字典列表。我read_csv()用來創(chuàng)建這個(gè)數(shù)據(jù)框。數(shù)據(jù)框如下所示:             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()功能。我期待著完成這件事。非常感謝您的幫助!
查看完整描述

2 回答

?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

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()

結(jié)果應(yīng)該是:


print(by_account_lst)

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


查看完整回答
反對(duì) 回復(fù) 2021-11-23
?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

這應(yīng)該這樣做:


portfolios = []

for _, account in df.groupby('AccountName'):

    portfolio = {stock['StockName']: stock['Allocation'] 

              for _, stock in account.iterrows()}

    portfolios.append(portfolio)

首先使用該groupby()函數(shù)按 對(duì)數(shù)據(jù)幀的行進(jìn)行分組AccountName。要訪問每個(gè)帳戶的各個(gè)行(股票),請(qǐng)使用該iterrows()方法。正如用戶@ebb-earl-co 在評(píng)論中解釋的那樣, the_作為占位符變量存在,因?yàn)閕terrows()返回 (index, Series) 元組,而我們只需要Series(行本身)。從那里,使用字典理解為每個(gè)股票創(chuàng)建字典映射StockName-> Allocation。最后,將該字典附加到 的列表中portfolios,從而得到預(yù)期的輸出:


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


還有一件事:如果您稍后決定要portfolios使用帳戶名稱標(biāo)記每個(gè)字典,您可以這樣做:


portfolios = []

for acct_name, account in df.groupby('AccountName'):

    portfolio = {stock['StockName']: stock['Allocation'] 

              for _, stock in account.iterrows()}

    portfolios.append({acct_name: portfolio})

這將返回一個(gè)嵌套的字典列表,如下所示:


[{'MN001': {'ABC': 0.4, 'ABD': 0.6}},

 {'MN002': {'EFG': 0.5, 'HIJ': 0.4, 'LMN': 0.1}}]

請(qǐng)注意,在這種情況下,我使用了變量acct_name而不是賦值給,_因?yàn)槲覀儗?shí)際上將使用索引來“標(biāo)記”portfolios列表中的字典。


查看完整回答
反對(duì) 回復(fù) 2021-11-23
  • 2 回答
  • 0 關(guān)注
  • 468 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)