提问人:PWolf 提问时间:8/17/2021 更新时间:8/17/2021 访问量:120
如何在 Pandas 中使用向量对矩阵执行布尔 AND?
How to perform boolean AND on matrix using vector in Pandas?
问:
我想使用向量对矩阵执行布尔 AND 运算。例如,给定:
matrix = pd.DataFrame([[True, False], [True, False], [True, False]], columns=["A", "B"])
vector = pd.Series([False, False, False])
结果将是逐列布尔 AND,如下所示:
result = pd.DataFrame([[False, False], [False, False], [False, False]], columns=["A", "B"])
我能够使用循环实现这一点,但我想知道 - 有没有更优雅的方法可以做到这一点?
答:
0赞
Vivek Kalyanarangan
8/17/2021
#1
用-
matrix.apply(lambda x: x & vector)
输出
A B
0 False False
1 False False
2 False False
这里暗示该函数的参数是用于按列应用的。axis
apply
0
1赞
ALollz
8/17/2021
#2
我会下拉到这样,你可以避免循环并在正确的轴上广播。然后重建 DataFramenumpy
import pandas as pd
pd.DataFrame(matrix.to_numpy() & vector.to_numpy()[:, None],
columns=matrix.columns,
index=matrix.index)
A B
0 False False
1 False False
2 False False
或者,您可以使用 DataFrame,允许进行简单的比较,然后返回结果。对于大型 DataFrame,这可能会变慢transpose
&
transpose
(matrix.T & vector).T
评论
0赞
PWolf
8/18/2021
谢谢。我接受了另一个答案,但这个答案包含有用的附加信息。
0赞
ALollz
8/18/2021
@PWolf是的,不用担心,我认为另一种解决方案更直接:D。与往常一样,您仍然可以对任何您认为有用的答案投赞成票
评论