簡體   English   中英

Python Pandas to_dict函數

[英]Python Pandas to_dict function

我正在嘗試創建字典,但無法按照我的意願使其工作。 我覺得我很親近。 我是yelp數據的df:

import pandas as pd
file_rev = 'blah.csv'

reviews=pd.read_csv(file_rev, sep=',',header=0, nrows=10000)

cols = ['user_id', 'business_id', 'stars']
cat_rev = reviews[cols]

print cat_rev

DF:

                   user_id             business_id  stars
0   Xqd0DzHaiyRqVH3WRG7hzg  vcNAWiLM4dR7D2nwwJ7nCA      5
1   H1kH6QZV7Le4zqTRNxoZow  vcNAWiLM4dR7D2nwwJ7nCA      2
2   zvJCcrpm2yOZrxKffwGQLA  vcNAWiLM4dR7D2nwwJ7nCA      4
3   KBLW4wJA_fwoWmMhiHRVOA  vcNAWiLM4dR7D2nwwJ7nCA      4
4   zvJCcrpm2yOZrxKffwGQLA  vcNAWiLM4dR7D2nwwJ7nCA      4
5   Qrs3EICADUKNFoUq2iHStA  vcNAWiLM4dR7D2nwwJ7nCA      1
6   jE5xVugujSaskAoh2DRx3Q  vcNAWiLM4dR7D2nwwJ7nCA      5
7   QnhQ8G51XbUpVEyWY2Km-A  vcNAWiLM4dR7D2nwwJ7nCA      5
8   tAB7GJpUuaKF4W-3P0d95A  vcNAWiLM4dR7D2nwwJ7nCA      1
9   GP-h9colXgkT79BW7aDJeg  vcNAWiLM4dR7D2nwwJ7nCA      5
10  uK8tzraOp4M5u3uYrqIBXg  UsFtqoBl7naz8AVUBZMjQQ      5

我希望能夠將其創建為如下所示的字典:

abc = {user1 : {business1:star_rating, business2:star_rating…, 
                businessN:star_rating}, 
       user2: {} … }

然后訪問,我將是: abc[user1]將給我user1審核過的所有地點和星級。
abc[user1][place1]只會給出相應的星級。

我嘗試了to_dict熊貓函數。 我試圖先進行groupby ,然后再進行dict(list(groupby())) ,似乎沒有任何東西可以將其轉換為我想要的形式。

也沒有,但幾乎:

ddd = cat_rev.set_index('user_id').to_dict(outtype='list')

您可以使用groupby和dict-comprehension:

{user_id: pd.Series(grp['stars'].values, index=grp['business_id']).to_dict() 
 for user_id, grp in df.groupby(['user_id'])}

產量

{'GP-h9colXgkT79BW7aDJeg': {'vcNAWiLM4dR7D2nwwJ7nCA': 5},
 'H1kH6QZV7Le4zqTRNxoZow': {'vcNAWiLM4dR7D2nwwJ7nCA': 2},
 'KBLW4wJA_fwoWmMhiHRVOA': {'vcNAWiLM4dR7D2nwwJ7nCA': 4},
 'QnhQ8G51XbUpVEyWY2Km-A': {'vcNAWiLM4dR7D2nwwJ7nCA': 5},
 'Qrs3EICADUKNFoUq2iHStA': {'vcNAWiLM4dR7D2nwwJ7nCA': 1},
 'Xqd0DzHaiyRqVH3WRG7hzg': {'vcNAWiLM4dR7D2nwwJ7nCA': 5},
 'jE5xVugujSaskAoh2DRx3Q': {'vcNAWiLM4dR7D2nwwJ7nCA': 5},
 'tAB7GJpUuaKF4W-3P0d95A': {'vcNAWiLM4dR7D2nwwJ7nCA': 1},
 'uK8tzraOp4M5u3uYrqIBXg': {'UsFtqoBl7naz8AVUBZMjQQ': 5},
 'zvJCcrpm2yOZrxKffwGQLA': {'vcNAWiLM4dR7D2nwwJ7nCA': 4}}

您也可以使用索引來壓縮值...

d = {k:v for k,v in  zip(df.index,df.to_dict('records'))}

暫無
暫無

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

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