gpt4 book ai didi

python - DataFrame和Series之间如何进行逻辑运算?

转载 作者:行者123 更新时间:2023-11-28 21:45:09 26 4
gpt4 key购买 nike

假设我有一个 bool DataFrame df 和一个 bool Series x 具有相同的索引,我想在 df 之间做逻辑运算和 x 每列。与使用 DataFrame.apply 相比,是否有类似 DataFrame.sub 的短而快速的方法?

In [31]: df
Out[31]:
x y z u
A False False True True
B True True True True
C True False False False

In [32]: x
Out[32]:
A True
B False
C True
dtype: bool

In [33]: r = df.apply(lambda col: col & x) # Any other way ??

In [34]: r
Out[34]:
x y z u
A False False True True
B False False False False
C True False False False

最佳答案

使用mul , 但需要转换为 int 然后转换为 bool, 因为 UserWarning:

print (df.astype(int).mul(x.values, axis=0).astype(bool))
x y z u
A False False True True
B False False False False
C True False False False

类似的解决方案:

print (df.mul(x.astype(int), axis=0).astype(bool))
x y z u
A False False True True
B False False False False
C True False False False

print (df.mul(x.values, axis=0))
x y z u
A False False True True
B False False False False
C True False False False

C:\Anaconda3\lib\site-packages\pandas\computation\expressions.py:181: UserWarning: evaluating in Python space because the '*' operator is not supported by numexpr for the bool dtype, use '&' instead unsupported[op_str]))

另一个 numpy 解决方案 np.logical_and :

print (pd.DataFrame(np.logical_and(df.values, x.values[:, None]), 
index=df.index,
columns=df.columns))

x y z u
A False False True True
B False False False False
C True False False False

关于python - DataFrame和Series之间如何进行逻辑运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39819323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com