Python 创建新的DataFrame并填充其列,但不使用pandas函数,而是使用for/while循环

Python 创建新的DataFrame并填充其列,但不使用pandas函数,而是使用for/while循环,python,pandas,dataframe,for-loop,while-loop,Python,Pandas,Dataframe,For Loop,While Loop,我已将名为的电影转换为。我将创建一个新的空数据框director\u rating,其中包含director和Average IMDB rating,并使用原始IMDB中给定类别中的平均值,使用相同名称的原始列中的值填写director评级。填充列必须不使用pandas函数,而是使用for和while循环。请告诉我如何做您确实应该使用: df.groupby("Director")["IMDB Rating"].mean() 但是,如果您要在不使用pandas函数的情况下以循环格式执行,那么您

我已将名为
的电影转换为
。我将创建一个新的空数据框
director\u rating
,其中包含
director
Average IMDB rating
,并使用原始
IMDB中给定类别中的平均值,使用相同名称的原始列中的值填写
director
评级
。填充列必须不使用pandas函数,而是使用for和while循环。请告诉我如何做

您确实应该使用:

df.groupby("Director")["IMDB Rating"].mean()
但是,如果您要在不使用pandas函数的情况下以循环格式执行,那么您可以这样做。您只需循环遍历每个唯一的控制器,并创建两个阵列:

  • 收视率之和除以电影数量(即平均收视率)
  • 导演的名字
  • 然后使用这两个数组并创建一个新的数据帧

    directors_unique = []
    
    for i in movies_converted.Director:
        if i not in directors_unique:
            directors_unique.append(i)
    
    list_directors = []
    list_ratings = []
    for director in directors_unique:
        list_directors.append(director)
        list_ratings.append(sum(movies_converted[movies_converted["Director"] == director]["IMDB Rating"])/len(movies_converted[movies_converted["Director"] == director]))
        director_rating = pd.DataFrame({"Director":list_directors, "Average IMDB Rating":list_ratings})
    
    你真的应该使用:

    df.groupby("Director")["IMDB Rating"].mean()
    
    但是,如果您要在不使用pandas函数的情况下以循环格式执行,那么您可以这样做。您只需循环遍历每个唯一的控制器,并创建两个阵列:

  • 收视率之和除以电影数量(即平均收视率)
  • 导演的名字
  • 然后使用这两个数组并创建一个新的数据帧

    directors_unique = []
    
    for i in movies_converted.Director:
        if i not in directors_unique:
            directors_unique.append(i)
    
    list_directors = []
    list_ratings = []
    for director in directors_unique:
        list_directors.append(director)
        list_ratings.append(sum(movies_converted[movies_converted["Director"] == director]["IMDB Rating"])/len(movies_converted[movies_converted["Director"] == director]))
        director_rating = pd.DataFrame({"Director":list_directors, "Average IMDB Rating":list_ratings})
    

    你知道有比
    for/while
    更有效的技术来执行数据帧操作吗?我猜。但这是我的大学作业,所以我必须按照说明去做……你应该试着阅读一下
    .iterrows
    loc
    ,以及
    for/while
    循环。试试youtube和谷歌吧,有很多简单易懂的教程。看起来你想让我们为你写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查和。您是否知道有比
    for/while
    更有效的技术来执行数据帧操作?我猜。但这是我的大学作业,所以我必须按照说明去做……你应该试着阅读一下
    .iterrows
    loc
    ,以及
    for/while
    循环。试试youtube和谷歌吧,有很多简单易懂的教程。看起来你想让我们为你写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查and。尽管
    Series.unique()
    仍然是一个函数:请看,您的命名只是不同而已。记住每个变量的名称。我已经更新了代码来满足你的需要,或多或少。啊,我只是开玩笑而已。总是很难知道这些徒劳无益(个人意见)的家庭作业问题的界限在哪里。顺便说一句,你可能只需要在片场中为导演(电影转换为导演)设置
    至少
    set
    是标准的:p@DianaPavlova没有输出看起来很奇怪。如果在另一个单元格中运行directors_rating,会发生什么情况?@DianaPavlova是的,这是因为您试图预览循环中的数据帧,而该数据帧打印得不好。如果您取消缩进最后一行(directors_rating),则上面的单元格可以工作,尽管
    Series.unique()
    仍然是一个函数:pI请看,您的命名完全不同。记住每个变量的名称。我已经更新了代码来满足你的需要,或多或少。啊,我只是开玩笑而已。总是很难知道这些徒劳无益(个人意见)的家庭作业问题的界限在哪里。顺便说一句,你可能只需要在片场中为导演(电影转换为导演)设置
    至少
    set
    是标准的:p@DianaPavlova没有输出看起来很奇怪。如果在另一个单元格中运行directors_rating,会发生什么情况?@DianaPavlova是的,这是因为您试图预览循环中的数据帧,而该数据帧打印得不好。如果取消缩进最后一行(董事评级),上述单元格将起作用