【问题标题】:Excel If one column contains unique values, and another column contains one true value, return all true values for those unique valuesExcel 如果一列包含唯一值,而另一列包含一个真值,则返回这些唯一值的所有真值
【发布时间】:2020-07-09 17:08:32
【问题描述】:

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

例如,我有以下数据:

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

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

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

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

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

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

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

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

【问题讨论】:

  • 当你标记 python 时,你在使用pandas api 吗?还是不同的图书馆?
  • Python 中的 Pandas api。

标签: python excel pandas unique countif


【解决方案1】:

这就是我在 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 值。如果两者都等于 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

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 2020-07-19
    • 2021-10-17
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多