使用 pandas 数据帧指定条件表达式

Specifying conditional expressions with pandas dataframes

我想弄清楚如何根据多重检查条件在数据框中创建列。

当我使用单个条件检查时,这似乎工作正常。

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 日 |真
2016 年 5 月 1 日 |真
2017 年 2 月 1 日 |假
2017 年 4 月 1 日 |错误

您需要按位运算符 & 而不是 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 不能很好地处理数据帧,但按位运算符 &|~ 都被重载用于条件语句。