python - TypeError:列表索引必须是整数或切片,而不是电影评分数据的元组
问题描述
我尝试查看有关如何解决此问题的其他文章,但由于某种原因我没有得到任何结果。我收到错误“TypeError:列表索引必须是整数或切片,而不是元组”,并想看看是否有人可以在我的代码中指出原因。
提前致谢!
nb_users = int(max(max(training_set[:,0]), max(test_set[:,0])))
nb_movies = int(max(max(training_set[:,1]), max(test_set[:,1])))
def convert(data):
new_data = [] expects that. 1 list per user
for id_users in range(1, nb_users + 1):
id_movies = data[:,1][data[:,0] == id_users]
id_ratings = data[:,2][data[:,0] == id_users]
ratings = np.zeros(nb_movies)
ratings[id_movies - 1] = id_ratings
new_data.append(list(ratings))
return new_data
training_set = convert(training_set)
test_set = convert(test_set)
TypeError: Traceback (most recent call last)
<ipython-input-35-d2825f049d11> in <module>()
3
4 #take max user id/movie id for total numbers for test and train set.
----> 5 nb_users = int(max(max(training_set[:,0]), max(test_set[:,0])))
6 nb_movies = int(max(max(training_set[:,1]), max(test_set[:,1])))
7
TypeError: list indices must be integers or slices, not tuple
解决方案
您似乎将其training_set
用作 Pandas 数据框,但它实际上是一个列表。
您应该首先将其转换为数据框;这样做的方式取决于training_set
' 元素的结构。例如,如果它们是字典,您可以这样做:
training_set_df = pandas.DataFrame(training_set)
然后使用training_set_df
代替training_set
.
推荐阅读
- python - 使用 python docx 突出显示 word doc 中的所有日期值
- laravel - 在 Laravel 中包含 dataTables.css 时遇到问题
- c - C 编程 - 指针地址字节拆分
- vba - 在运行代码之前检查不同的范围
- json - 在 Swift 4.1 中解析任意 JSON
- html - input type="file" 导致 iphone 横屏溢出
- swift - 错误:没有有效的注册 ID iOS FCM
- django - Django:如何根据外键属性设置整数字段最大值?
- javascript - 使用 reduce 函数从调用中检索值
- shell - postfix 的电子邮件日志脚本提示