我有一个Dataframe,它有一个movie name列和3个其他列(我们称它们为a、B和C),它们是来自3个不同来源的收视率。 有许多电影只有一个评级,一些电影与来自3个论坛的组合,还有一些没有评级。我想创建一个新列,它将:
到目前为止,我的代码是这样的:
def check_rating(rating):
if newyear['Yahoo Rating'] != "\\N":
return rating
else:
if newyear['Movie Mom Rating'] != "\\N":
return rating
else:
if newyear['Critc Rating'] != "\\N":
return rating
else:
return "Unrated"
df['Rating'] = df.apply(check_rating, axis=1)
我得到的错误是:
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0')
对于我的数据帧的可视性,这里是newyear.head()
:
我不确定这个值错误对解决这个问题意味着什么,也不确定这是否是正确的方法。你知道吗
我会这样做:
代码无法工作的原因是
newyear['Yahoo Rating'] != "\\N"
是一个布尔数组。你在这里说的是if [True, False, True, False]:
。这就是模棱两可的根源。你如何评价这种情况?如果所有这些都是真的,你会执行吗?或者仅仅一个就足够了?你知道吗作为M. Klugerford explained,您可以更改它,以便逐行计算它(因此返回单个值)。但是,逐行应用操作通常很慢,而且pandas有很好的工具来处理丢失的数据。所以我才提出这个建议。你知道吗
您正在原始函数中返回
rating
。。但是rating
是行,而不是任何列的值相关问题 更多 >
编程相关推荐