我想知道如何根据多重检查条件在数据框中创建一个列。
当我使用单个条件检查时,这似乎工作正常。
df['1/1/2017'] = np.where(df["Term 1 Start Date"] <= '1/1/2017'), 'True', 'False')
然而,当我引入第二个选项来检查时,这告诉我ValueError: The truth value of a Series is ambiguous.
df['1/1/2017'] = np.where(
(df["Term 1 Start Date"] <= '1/1/2017' and df["Term 1 End Date"] > '1/1/2017'), 'True', 'False')
应该注意的是,并非所有行都被填写。日期包含您期望的日期。 如何根据两个标准填充此新列?
当前数据框
期望的结果
第1学期开始日期| 2017年1月1日
空白|空白
2016年6月12日真
5/1/2016 |真
2/1/2017 |假
4/1/2017 |错误
答案 0 :(得分:3)
您需要按位运算符&
而不是and
。您还需要额外的括号来处理优先级。
df['1/1/2017'] = np.where(((df["Term 1 Start Date"] <= '1/1/2017')\
& (df["Term 1 End Date"] > '1/1/2017'),\
'True', 'False'))
原因是,and
对数据帧不起作用,但按位运算符&
,|
和~
都过载以用于条件数据。