我知道下面的错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
很久以前就有人问过了。
但是,我正在尝试创建一个基本函数,并返回一个新列,其中df['busy']
包含1
或0
。我的功能是这样的
def hour_bus(df):
if df[(df['hour'] >= '14:00:00') & (df['hour'] <= '23:00:00')&\
(df['week_day'] != 'Saturday') & (df['week_day'] != 'Sunday')]:
return df['busy'] == 1
else:
return df['busy'] == 0
我可以执行这个函数,但是当我用数据帧调用它时,我得到了上面提到的错误。我按照下面的thread和另一个thread来创建该函数。我在我的if
子句中使用&
而不是and
。
不管怎样,当我做以下的时候,我得到了我想要的输出。
df['busy'] = np.where((df['hour'] >= '14:00:00') & (df['hour'] <= '23:00:00') & \
(df['week_day'] != 'Saturday') & (df['week_day'] != 'Sunday'),'1','0')
关于我在我的hour_bus
函数中犯了什么错误,有什么想法吗?
那个
给出一个布尔数组,当你用它为你的
df
编制索引时,你将得到df
的一小部分。只是为了说明我的意思:
但是它仍然是一个
DataFrame
,因此将它用作需要真值的表达式是不明确的(在您的例子中是if
)。您可以使用您使用的
np.where
或等效的:但是
np.where
将是更好的解决方案(它更可读,可能更快)。相关问题 更多 >
编程相关推荐