gpt4 book ai didi

python - Pandas 数据框到字典值

转载 作者:行者123 更新时间:2023-11-28 16:40:38 24 4
gpt4 key购买 nike

我有一个三列数据报,打算按照给定的格式在字典中转换:

数据报:

user_id item_id ratings
3 2 3
3 3 4
1 3 1
2 1 4

用户数 = 3

项目数量 = 3

评分 = 0 到 5

字典=

{user_id1:[rating_for_item1, rating_for_item2, rating_for_item3],
user_id2:[.same as previous.],
user_id3:[..same as prev..]}

例如,

{1:[0,0,1], 2:[4,0,0], 3:[0,3,4]}

所以,到目前为止我能做的就是输出如下:

{1:{3:1}, 2:{1:4}, 3:{2:3, 3:4}} #{user_id:{item_id:rating}.....}

上面输出的代码是这样的:

import pandas as pd
data = {}
cols = ['user_id', 'item_id', 'ratings']
pf = pd.read_csv('filename', sep='\t', names= cols)
for user, item, rate in pf.values: data.setdefault(user,{})[item] = rate
print data

我的代码中缺少什么,或者我完全走错了路。请帮忙。

最佳答案

我会pivot 然后构建字典。例如:

pdf = df.pivot("user_id", "item_id").fillna(0)
d = {k: v.tolist() for k,v in pdf.iterrows()}

产生

>>> d
{1: [0.0, 0.0, 1.0], 2: [4.0, 0.0, 0.0], 3: [0.0, 3.0, 4.0]}

一、框架:

>>> df
user_id item_id ratings
0 3 2 3
1 3 3 4
2 1 3 1
3 2 1 4

枢轴:

>>> pdf = df.pivot("user_id", "item_id")
>>> pdf
ratings
item_id 1 2 3
user_id
1 NaN NaN 1
2 4 NaN NaN
3 NaN 3 4

用 0 替换 NaN:

>>> pdf = df.pivot("user_id", "item_id").fillna(0)
>>> pdf
ratings
item_id 1 2 3
user_id
1 0 0 1
2 4 0 0
3 0 3 4

并使用字典理解构建一个按行的字典:

>>> d = {k: v.tolist() for k,v in pdf.iterrows()}
>>> d
{1: [0.0, 0.0, 1.0], 2: [4.0, 0.0, 0.0], 3: [0.0, 3.0, 4.0]}

有很多方法可以完成这最后一步,包括 dict(zip(pdf.index, pdf.values.tolist())),但其中许多方法并不那么容易概括当你想稍微调整一下时。

关于python - Pandas 数据框到字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com