DataFrame 根据提供的谓词更改多列的值

DataFrame change values of multiple columns according to provided predicate

鉴于:

from pandas import DataFrame
import pandas as pd

d = {'x':[2,3,1,4,5],
     'y':[5,4,3,2,1],
     'letter':['a','a','b','b','c']}

df = DataFrame(d)

还有一些函数 p 接受 2 个参数和 returns 一个布尔值。
我想要这样的东西:

result = df[['x', 'y']].apply(f)

并得到一个布尔向量,根据谓词函数f.
例如if f = lambda x, y: x > 3 and y < 3result应该等于[False, False, False, True, True].
有没有一种简单的方法可以做到这一点?我还没有找到解决方案。

这里不需要apply。按位逻辑将为您提供所需的信息:

import pandas

d = {'x':[2,3,1,4,5],
     'y':[5,4,3,2,1],
     'letter':['a','a','b','b','c']}

df = (
    pandas.DataFrame(d)
        .assign(
            condition=lambda df: (df['x'] > 3) & (df['y'] < 3)
        )
)
df

这给了我:

   x  y letter  condition
0  2  5      a      False
1  3  4      a      False
2  1  3      b      False
3  4  2      b       True
4  5  1      c       True