Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DataFrame根据提供的谓词更改多列的值_Python_Pandas_Dataframe_Predicate - Fatal编程技术网

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

Python DataFrame根据提供的谓词更改多列的值,python,pandas,dataframe,predicate,Python,Pandas,Dataframe,Predicate,鉴于: 还有一些函数p,它接受两个参数并返回一个布尔值。 我想要一些类似于: 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) 并根据谓词函数f得到一个布尔向量。 例如,如果f=lambda x,y:x>3和y3)和(df['y']

鉴于:

还有一些函数p,它接受两个参数并返回一个布尔值。
我想要一些类似于:

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)
并根据谓词函数f得到一个布尔向量。
例如,
如果f=lambda x,y:x>3和y<3
结果
应等于
[假,假,假,真,真]


有没有一个简单的好方法?我还没有找到解决方案。

您不需要在此处应用
。位逻辑将为您提供所需的:

导入熊猫
d={'x':[2,3,1,4,5],
‘y’:[5,4,3,2,1],
字母:[a',a',b',b',c']
df=(
数据帧(d)
.分配(
条件=λdf:(df['x']>3)和(df['y']<3)
)
)
df
这给了我:

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

您不需要在此处应用
。位逻辑将为您提供所需的:

导入熊猫
d={'x':[2,3,1,4,5],
‘y’:[5,4,3,2,1],
字母:[a',a',b',b',c']
df=(
数据帧(d)
.分配(
条件=λdf:(df['x']>3)和(df['y']<3)
)
)
df
这给了我:

result = df[['x', 'y']].apply(f)
应用(lambda行:f(行['a'],行['b']),轴=1)
应用(lambda行:f(行['a'],行['b']),轴=1)