【发布时间】:2019-06-11 14:03:36
【问题描述】:
我有一个这样的熊猫数据框:
df = pd.DataFrame({"A": [1, 2, 3, 4, 5, 6], "B": [100, 200, 300, 400, 500,
600]})
如果满足某些条件,我想创建一个具有某些值的新列。问题是:这些是& 和| 的多个条件。我知道我可以只用两个条件然后多次df.loc 调用来做到这一点,但由于我的实际数据集非常大,变量可以采用许多不同的值,我想知道是否有可能在一个df.loc 打电话。我之前也尝试过np.where,但发现df.loc 通常更容易,所以如果我能坚持下去就好了。
我试过的代码是
df.loc[(df.A == 1) | (df.A == 2) & (df.B == 600) | (df.B == 200), "C"] =
"1or2and600or200"
这给了我
print(df)
A B C
0 1 100 1or2and600or200
1 2 200 1or2and600or200
2 3 300 NaN
3 4 400 NaN
4 5 500 NaN
5 6 600 NaN
但这不是我想要的,因为df.loc 可能只考虑前两个条件。因此,在此代码示例中,我希望值 1or2and600or200 仅在第一行中,而不是在第二行中。这可能吗?
非常感谢。
【问题讨论】: