Python Pandas to_dict 函数

Elm*_*oVT 2 python pandas

我\xe2\x80\x99m 尝试创建一个字典,但是\xe2\x80\x99t 不能让它按照我想要的方式工作。我感觉我\xe2\x80\x99m 如此接近。我的 yelp 数据:

\n\n
import pandas as pd\nfile_rev = 'blah.csv'\n\nreviews=pd.read_csv(file_rev, sep=',',header=0, nrows=10000)\n\ncols = ['user_id', 'business_id', 'stars']\ncat_rev = reviews[cols]\n\nprint cat_rev\n
Run Code Online (Sandbox Code Playgroud)\n\n

df:

\n\n
                   user_id             business_id  stars\n0   Xqd0DzHaiyRqVH3WRG7hzg  vcNAWiLM4dR7D2nwwJ7nCA      5\n1   H1kH6QZV7Le4zqTRNxoZow  vcNAWiLM4dR7D2nwwJ7nCA      2\n2   zvJCcrpm2yOZrxKffwGQLA  vcNAWiLM4dR7D2nwwJ7nCA      4\n3   KBLW4wJA_fwoWmMhiHRVOA  vcNAWiLM4dR7D2nwwJ7nCA      4\n4   zvJCcrpm2yOZrxKffwGQLA  vcNAWiLM4dR7D2nwwJ7nCA      4\n5   Qrs3EICADUKNFoUq2iHStA  vcNAWiLM4dR7D2nwwJ7nCA      1\n6   jE5xVugujSaskAoh2DRx3Q  vcNAWiLM4dR7D2nwwJ7nCA      5\n7   QnhQ8G51XbUpVEyWY2Km-A  vcNAWiLM4dR7D2nwwJ7nCA      5\n8   tAB7GJpUuaKF4W-3P0d95A  vcNAWiLM4dR7D2nwwJ7nCA      1\n9   GP-h9colXgkT79BW7aDJeg  vcNAWiLM4dR7D2nwwJ7nCA      5\n10  uK8tzraOp4M5u3uYrqIBXg  UsFtqoBl7naz8AVUBZMjQQ      5\n
Run Code Online (Sandbox Code Playgroud)\n\n

我希望能够将其创建为字典,如下所示:

\n\n
abc = {user1 : {business1:star_rating, business2:star_rating\xe2\x80\xa6, \n                businessN:star_rating}, \n       user2: {} \xe2\x80\xa6 }\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后要访问,我只需: \nabc[user1]会给我 user1 评论过的所有地点和星星。
\nabc[user1][place1]只会给出相应的星级。

\n\n

我\xe2\x80\x99已经尝试过to_dictpanda函数。我先尝试groupby,然后dict(list(groupby())),似乎没有什么可以将其转换为我想要的方式。

\n\n

也不,但几乎:

\n\n
ddd = cat_rev.set_index('user_id').to_dict(outtype='list')\n
Run Code Online (Sandbox Code Playgroud)\n

unu*_*tbu 5

您可以使用 groupby 和字典理解:

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

产量

{'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}}
Run Code Online (Sandbox Code Playgroud)