使用 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
不能很好地处理数据帧,但按位运算符 &
、|
和 ~
都被重载用于条件语句。
我想弄清楚如何根据多重检查条件在数据框中创建列。
当我使用单个条件检查时,这似乎工作正常。
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
不能很好地处理数据帧,但按位运算符 &
、|
和 ~
都被重载用于条件语句。