python值以两列为条件

时间:2017-05-30 15:16:46

标签: python pandas dataframe syntax

我有以下数据集:

id  Rank   condition1    condition2  result 
1    2      50           0            0  
1    2      50           0            0
2    55     50           1            0
2    55     50           1            0

我想在条件1和条件2的两列条件下将结果列设置为1。

如果rank <= condition 1 AND if condition2 = 0

,结果应为1
id  Rank   condition1    condition2  result 
1    2      50           0            1  
1    2      50           0            1
2    55     50           1            0
2    55     50           1            0

我尝试了以下代码,但获得了“无效语法”。

df["result"][df[condition2] = 0 & df["Rank"]<= df["condition1"]] = 1

有人可以帮我找到错误吗?我知道如何使这个命令以一个条件为条件,但我不知道如何用AND命令合并第二个条件。

1 个答案:

答案 0 :(得分:3)

您需要使用==进行相等性检查,单=用于分配而非进行比较:

df["result"][(df['condition2'] == 0) & (df["Rank"]<= df["condition1"])] = 1

您还忘记了'的{​​{1}},并且我添加了一些括号来分隔条件,因为condition2的优先级高于&==。< / p>

Pandas还提供了比较方法(本例中为<=eq),因此您也可以使用:

le