当我将数据帧附加到列时,数据不会“粘”到数据帧上

2024-09-27 00:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程和数据科学很陌生。我遇到了一个奇怪的问题。我在一个充满电影信息的数据框上做特征工程。我把每部电影的演员数矢量化,并预测元批评得分

最初,我还尝试用列表系列中每个成员的总分来替换Actors列。例如,如果一部电影中列出了四个人,我会用下面的代码取他们的平均分数(他们自己的平均分数)并取平均值。有些演员没有价值观,或者有些电影可能没有列出演员,所以如果遇到这些问题,我只使用annp.nan(稍后,我会将其更改为666.666,以便轻松删除)

起初这似乎奏效了。它给了我更好的模型(虽然只有当我仍然计算矢量化的演员栏时)。但这可能是一种侥幸。我注意到有些数据看起来很奇怪。所以我试着重现这个问题

对于此代码: 参与者是一列列表,每个列表有四个参与者的名字。 actors\ u df是一个由两列组成的数据帧,其中一列是actor名称,另一列是它们对应的平均元批评分数。 morta\u列表只是一个列表,这样我就可以跟踪到底发生了什么

morta = df.dropna(axis=0, how='any', subset=['Metascore', 'imdbID']).copy()
morta['ActorAvg'] = 0.

morta_list = []
for index, m in enumerate(morta.Actors):
    s=0
    den = 0
    for p in m:
        for n in zip(actors_df.name.values, actors_df.avgscore):
            if p.lower() == n[0]:
                s = s + n[1]
                den = den + 1
    if den == 0:
        morta.ActorAvg[index]=666.666
        morta_list.append(666.666)
    else:
        morta.ActorAvg[index]=s/den
        morta_list.append(s/den)

然而,后来,当我查看我的新专栏时,我得到了奇怪的结果:

morta['ActorAvg'].sum()

给了我6344793.712,但是

morta[['ActorAvg']].sum()

给了我0。还有其他差异。例如:

values don't match up

won't sum correctly

我无法让新的ActorAvg列在新的数据帧中以总和的形式重现6344793.712

我知道这很复杂,我不确定我是否解释得很好,但有人能帮我把这些信息“粘住”吗


Tags: 数据indf列表forindex电影actors

热门问题