【发布时间】:2021-07-09 21:37:15
【问题描述】:
我目前正在尝试使用 Pandas 应用矢量化的概念。我已经成功地能够使用粗循环,但是在相同的代码上,当我尝试矢量化并将整个系列传递给我得到的函数时
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我的功能比较简单:
def price_function(x):
if x >= 50:
return "High"
else:
return "low"
我用 price 系列的 Dataframe 调用它,具有以下内容:
listing_price = price_function(listings_dataframe_big['price'])
并且错误是由以下行触发的:
if x >= 50:
知道为什么会发生这种情况以及如何解决这个问题吗?
【问题讨论】:
-
由于一个系列有多个值,因此评估 s > 50 是不明确的,因为该系列的一部分可能是 True,而其他部分可能是 False。是否要检查是否所有值都大于 50 或单个值是否大于 50。请使用
all或any。 -
你可以
np.where(listings_dataframe_big['price'] >=50, 'high', 'low')。速度超级快 -
请注意
apply和map不是矢量化。np.where被矢量化了。