我有以下数据集:
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
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命令合并第二个条件。
答案 0 :(得分:3)
您需要使用==
进行相等性检查,单=
用于分配而非进行比较:
df["result"][(df['condition2'] == 0) & (df["Rank"]<= df["condition1"])] = 1
您还忘记了'
的{{1}},并且我添加了一些括号来分隔条件,因为condition2
的优先级高于&
或==
。< / p>
Pandas还提供了比较方法(本例中为<=
和eq
),因此您也可以使用:
le