Excel 如果一列包含唯一值,而另一列包含一个真值,return 这些唯一值的所有真值

Excel If one column contains unique values, and another column contains one true value, return all true values for those unique values

我在 Exel(365 版本)中有一个超过 78K 行的大文件。我正在尝试编写一个公式,该公式将 return 一个 TrueFalse 值,该值取决于 Column A 中的唯一值(21K 唯一值)并且如果任何值在 Column B 中是 True,那么 Column C 应该 return 一个 True 值用于 Column A.

中的唯一值范围

比如我有以下数据:

Column A     Column B
1            True
1            False
1            False
2            False
2            False
3            False
3            True

我希望Column C显示以下内容:

Column A     Column B     Column C
1            True         True
1            False        True
1            False        True
2            False        False
2            False        False
3            False        True
3            True         True

换句话说,对于 Column A 中的每个唯一值,如果 Column B 中的任何对应值是 True,我想要 Column C 中的所有值声明 True.

在对各种公式进行了多次不同的尝试之后,我想我可能会找到与以下公式接近的东西,但它 returns True 每个单元格。我不确定我错过了什么。

=+IF(AND(UNIQUE($A:$A)),COUNTIF($B:$B,"TRUE")>0,1)

我的数据没有任何缺失值。

我在这个网站上搜索了我正在尝试的内容,但上面的公式是我能找到的最接近的。 很接近,但不是我要找的。

我知道我可以使用以下公式手动执行此操作,但 Column A 中有超过 21K 个唯一值,如果不需要,我不想手动执行此操作。

=+COUNTIF($B:$B,"TRUE")>0

如果这在 Python 中更容易执行,该代码将很有帮助。我是 Python 的新手,对 Excel 更熟悉,但理解 Python 可能更容易、更快。

这就是我在 pandas 中的处理方式。

print(df)
#note i've added in a non duplicated row for testing.


   Column_A  Column_B
0         1      True
1         1     False
2         1     False
3         2     False
4         2     False
5         3     False
6         3      True
7         4      True

首先我会写两个布尔表达式,第一个 - 查看是否有任何值重复,第二个查看 Column_B 是否包含任何真值。如果两者都等于 True 我想将 A 列中的所有 ID 传递到列表中。

vals = df.loc[df.duplicated(subset=["Column_A"], keep=False) 
              & df["Column_B"].eq(True),
             "Column_A"].tolist()

print(vals)

[1, 3]

现在我们知道值是什么,我们可以编写一个简单的布尔赋值。

df['Column_C'] = df['Column_A'].isin(vals)

print(df)
   Column_A  Column_B  Column_C
0         1      True      True
1         1     False      True
2         1     False      True
3         2     False     False
4         2     False     False
5         3     False      True
6         3      True      True
7         4      True     False