簡體   English   中英

將 pandas dataframe 轉成字典

[英]Turn pandas dataframe into dictionary

我在 pandas dataframe 上運行 for 循環,該循環獲取每一行並創建一個字典(某種)然后上傳到內部系統。

for 循環不是問題,上傳到內部系統也不是問題。 我似乎無法獲得正確的字典格式以進行上傳。

這是 dataframe 的 model:

    Id    Acct_num    Acct_Name   Prod   Date        Rev
0  1495   5001        Alpha       ret34  4/30/2020   4999
1  1496   5002        Beta        pro45  4/30/2020   18076
2  1497   5003        Gamma       sli55  4/30/2020   5671
3  1498   5004        Delta       ret34  4/30/2020   16683

如果需要,可以更好地查看

我需要 dataframe 的每一行如下所示(前兩行):

1495:{'Acct_num':'5001', 'Acct_Name':'Alpha', 'Prod':'ret34', 'Date':'4/30/2020', 'Rev':'4999'}
1496:{'Acct_num':'5002', 'Acct_Name':'Beta', 'Prod':'pro45', 'Date':'4/30/2020', 'Rev':'18076'}

這是我嘗試過的(還有其他一些變化,但無濟於事):

for row in df.iloc[:,:].itertuples(index=False):
    if not row:
        break
    else:   
        d = row._asdict()
d

它輸出一個這樣的有序字典:

OrderedDict([('Id', '1495),('Acct_num', '5001'),('Acct_Name', 'Alpha'),('Prod', 'ret34'), ('Date','2020-04-30'),('Rev',4999)])

to_dict與 orient="index" 一起使用

'index': 像 {index -> {column -> value}} 這樣的字典

d = df.to_dict(orient="index")
d
{1495: {'Acct_num': 5001, 'Acct_Name': 'Alpha', 'Prod': 'ret34', 'Date': '4/30/2020', 'Rev': 4999}, 
1496: {'Acct_num': 5002, 'Acct_Name': 'Beta', 'Prod': 'pro45', 'Date': '4/30/2020', 'Rev': 18076}, 
1497: {'Acct_num': 5003, 'Acct_Name': 'Gamma', 'Prod': 'sli55', 'Date': '4/30/2020', 'Rev': 5671}, 
1498: {'Acct_num': 5004, 'Acct_Name': 'Delta', 'Prod': 'ret34', 'Date': '4/30/2020', 'Rev': 16683}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM