如何在Python3中将数据框转换为字典

阿尔弗雷德

我已经在网上搜索了很长一段时间,但无济于事。请帮助或尝试给出一些想法如何实现这一目标

我使用熊猫读取MovieLens CSV文件

ratings = pd.read_table('ml-latest-small/ratings.csv')

然后我得到一个像这样的表:

userId  movieId rating  timestamp
1       31      2.5     1260759144
1       1029    3.0     1260759179
1       1061    3.0     1260759182
1       1129    2.0     1260759185
1       1172    4.0     1260759205
2       31      3.0     1260759134
2       1111    4.5     1260759256

我想将其转换为像

{userId:{movieId:rating}}

例如

{
 1:{31:2.5,1029:3.0,1061,3.0,1129:2.0,1172:4.0},
 2:{31:3.0,1111:4.5}
}

我尝试了这段代码,但失败了:

for user in ratings['userId']:
for movieid in ratings['movieId']:
    di_rating.setdefault(user,{})
    di_rating[user][movieid]=ratings['rating'][ratings['userId'] == user][ratings['movieId'] == movieid]

有人可以帮帮我吗?

耶斯列尔

你可以用groupbyiterrows

d = df.groupby('userId').apply(lambda y: {int(x.movieId): x.rating for i, x in y.iterrows()})
      .to_dict()
print (d)
{
1: {1129: 2.0, 1061: 3.0, 1172: 4.0, 1029: 3.0, 31: 2.5}, 
2: {1111: 4.5, 31: 3.0}
}

删除答案的另一种解决方案:

d1 = df.groupby('userId').apply(lambda x: dict(zip(x['movieId'], x['rating']))).to_dict()
print (d1)
{
1: {1129: 2.0, 1061: 3.0, 1172: 4.0, 1029: 3.0, 31: 2.5}, 
2: {1111: 4.5, 31: 3.0}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Pandas中将Python字典转换为数据框

如何在Python中将字典转换为数据框

如何在 Python 中将嵌套字典转换为数据框

如何在pandas数据框Python3中使用多列将复数转换为幅度和角度?

如何在Python3中将字符串转换为unicode?

如何在python3中将.wav文件转换为频谱图

如何在python3中将OrderedDict转换为常规dict

如何在Python3中将字符串列表转换为整数?

如何在PySpark中将字典转换为数据框?

如何在PySpark中将字典转换为数据框

如何在熊猫中将堆叠的数据框转换为字典?

在Python中将数据框转换为字典

在python中将字典转换为数据框

如何在 Python 3 中将字典转换为列表

如何在Python3中将多个文本文件转换为csv格式?

如何在python3中将24位WAV文件转换为16或32位文件

如何在python3中将负位表示的数字转换为它们的实际负int值?

如何在python3中将反斜杠字符串转换为正斜杠字符串?

如何在python3中将浮点数和字符串转换为整数值

如何将python字典转换为熊猫数据框

如何将数据框转换为字典python

在Python 3中将字典列表转换为CSV

将python字典列表转换为pandas中的数据框

将字典转换为Python数据框

将Python字典转换为数据框

如何使用python3将数据框中的一个特定文本列转换为'utf-8'

如何在python中将数据框转换为数组?

如何在Python中将数据框的元素转换为变量

如何在python中将列表转换为数据框?