Python Excel如果一列包含唯一值,而另一列包含一个真值,则返回这些唯一值的所有真值
我在Exel(365版本)中有一个超过78K行的大文件。我正在尝试编写一个公式,该公式将返回一个Python Excel如果一列包含唯一值,而另一列包含一个真值,则返回这些唯一值的所有真值,python,excel,pandas,unique,countif,Python,Excel,Pandas,Unique,Countif,我在Exel(365版本)中有一个超过78K行的大文件。我正在尝试编写一个公式,该公式将返回一个True或False值,该值取决于列a中的唯一值(21K唯一值),如果列B中的任何值为True,然后列C应为列a中的唯一值范围返回一个True值 例如,我有以下数据: Column A Column B 1 True 1 False 1 False 2 False 2 False 3
True
或False
值,该值取决于列a
中的唯一值(21K唯一值),如果列B
中的任何值为True
,然后列C
应为列a
中的唯一值范围返回一个True
值
例如,我有以下数据:
Column A Column B
1 True
1 False
1 False
2 False
2 False
3 False
3 True
我希望列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
换句话说,对于列A
中的每个唯一值,如果列B
中的任何对应值为真
,我希望列C
中的所有值都声明真
在多次尝试不同的公式之后,我想我可能发现了与以下公式相近的东西,但对于每个单元格,它都返回True
。我不确定我错过了什么
=+IF(AND(UNIQUE($A$1:$A$7)),COUNTIF($B$1:$B$7,"TRUE")>0,1)
我的数据没有任何缺失值
我在这个网站上搜索了我正在尝试的东西,但上面的公式是我能找到的最接近的公式。很接近,但不是我想要的
我知道我可以用下面的公式手动执行此操作,但是在列A
中有超过21K个唯一值,如果不需要,我不想手动执行此操作
=+COUNTIF($B$1:$B$3,"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
首先,我将编写两个布尔表达式,第一个是查看是否有任何值重复,第二个是查看列_B是否包含任何真值。如果两者都等于真,我想将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
当您标记python时,您是否正在使用
pandas
api?或者另一个库?Python中的api。