Python DataFrame根据提供的谓词更改多列的值
鉴于: 还有一些函数p,它接受两个参数并返回一个布尔值。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']
我想要一些类似于:
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)