如何实现仅当两列中某一列单独为True时生成对应标记列?
解决方案
你需要的是针对特定列组合的精确布尔判断,直接用逻辑与+取反就能实现,而XOR因为是两值不同时为真,无法区分具体是哪一列满足条件,所以不适用。
核心逻辑
- Column C:仅当
Column A = True且Column B = False时为True →Column A AND (NOT Column B) - Column D:仅当
Column B = True且Column A = False时为True →Column B AND (NOT Column A)
不同工具的实现方式
Excel/Google Sheets
在对应单元格输入公式后下拉填充:
- Column C 公式:
=AND(A2, NOT(B2)) - Column D 公式:
=AND(B2, NOT(A2))
Python Pandas
import pandas as pd # 构建示例数据 df = pd.DataFrame({ 'Column A': [True, True, False, False], 'Column B': [False, True, True, False] }) # 生成目标列 df['Column C'] = df['Column A'] & ~df['Column B'] df['Column D'] = df['Column B'] & ~df['Column A'] # 输出结果 print(df)
执行后将得到你期望的结果集。
SQL
假设数据存储在表boolean_data中,使用CASE语句生成目标列:
SELECT "Column A", "Column B", CASE WHEN "Column A" = TRUE AND "Column B" = FALSE THEN TRUE ELSE FALSE END AS "Column C", CASE WHEN "Column B" = TRUE AND "Column A" = FALSE THEN TRUE ELSE FALSE END AS "Column D" FROM boolean_data;
内容的提问来源于stack exchange,提问作者Zimm
相关产品推荐
相关产品推荐

