【问题标题】:Function not returning the correct amount of observations函数未返回正确数量的观察值
【发布时间】:2019-10-19 22:56:58
【问题描述】:

我正在尝试创建一个函数来显示n 在给定数据框中用户评分最高的电影数量。我已经能够提取用户为其评分的电影,但我无法返回正确的行数 - 而是打印所有带有用户评分的电影。

我已经尝试过这种方式,如代码中的.head(n_rows) 所示,但它不起作用:

def top_movies(data_,usr,n_rows = 10):
    user = data_[data_['user_id']== usr]
    movies = data_.loc[user.index].groupby('title')['title','rating']
    final = movies.head(n_rows).sort_values(by = 'rating' ,ascending = False)
    return final
def ex9():
    return top_movies(data,1,30)
ex9()

例如,我希望在这里打印前 30 行。

【问题讨论】:

  • 你能提供一个数据框结构的例子吗?
  • user 是一个面具,你可以试试这个:movies = data_.loc[user].groupby('title')['title','rating']。 movies.sort_values(by = 'rating' ,ascending = False).head(n_rows)。而且,根本不起作用,请提供您遇到的错误。

标签: python pandas


【解决方案1】:

我不确定你想要实现什么,但请检查一下:

import pandas as pd


df = pd.DataFrame(
        {
         'user_id': [1, 1, 1, 2, 2, ],
         'title': ['t1', 't2', 't3', 't1', 't5'],
         'rating': [25, 25, 35, 25, 30,],
        })


df.sort_values(by='rating', ascending=False).groupby('user_id')[['user_id', 'title','rating', ]].nth(list(range(30)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多