python 如果两列中有一列为真,则仅保留True

c9qzyr3d  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(163)

我有两个专栏,如下所示。
| 色谱柱A|B栏|
| - ------|- ------|
| 真的|假|
| 真的|真的|
| 假|真的|
| 假|假|
我想得到
| 色谱柱A|B栏|C栏|D栏|
| - ------|- ------|- ------|- ------|
| 真的|假|真的|假|
| 真的|真的|假|假|
| 假|真的|假|真的|
| 假|假|假|假|
我尝试使用XOR运算符,但不知道如何使它只在特定列为真时返回真。

cpjpxq1n

cpjpxq1n1#

XOR是错误的函数。您需要A AND NOT BNOT A AND B

df = pd.DataFrame({
    'A': [True, True, False, False],
    'B': [False, True, True, False]})

df['C'] = df['A'] & ~df['B']
df['D'] = ~df['A'] & df['B']
df
A      B      C      D
0   True  False   True  False
1   True   True  False  False
2  False   True  False   True
3  False  False  False  False

如果有帮助的话,这些操作被称为非蕴涵和逆非蕴涵,维基百科在这里有一个表格:Template:Logical connectives

相关问题