我对编程和数据科学很陌生。我遇到了一个奇怪的问题。我在一个充满电影信息的数据框上做特征工程。我把每部电影的演员数矢量化,并预测元批评得分
最初,我还尝试用列表系列中每个成员的总分来替换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。还有其他差异。例如:
我无法让新的ActorAvg列在新的数据帧中以总和的形式重现6344793.712
我知道这很复杂,我不确定我是否解释得很好,但有人能帮我把这些信息“粘住”吗
使用
df.loc[row_index, col_name] = value
。否则,您将为数据帧的一个片段赋值。更多信息:https://www.dataquest.io/blog/settingwithcopywarning/相关问题 更多 >
编程相关推荐