Python 跨列显示Lambda或/和语句

Python 跨列显示Lambda或/和语句,python,pandas,Python,Pandas,我正在尝试创建一个新的列[Check],查看我的[Color]列和[Size]列,说明如果颜色为蓝色且大小大于50,则该列应为所有者,否则留空 如果颜色=蓝色&大小>50,则[Owner]否则为空 我有以下资料: df['Check'] = df['Color'].apply(lambda x,y: df['Owner'] if (x == 'Blue') & (y > 50) else null) 我不知道如何告诉apply函数将颜色包含为x,大小包含为y。然后,对于lambd

我正在尝试创建一个新的列[Check],查看我的[Color]列和[Size]列,说明如果颜色为蓝色且大小大于50,则该列应为所有者,否则留空

如果颜色=蓝色&大小>50,则[Owner]否则为空

我有以下资料:

df['Check'] = df['Color'].apply(lambda x,y: df['Owner'] if (x == 'Blue') & (y > 50) else null)
我不知道如何告诉apply函数将颜色包含为x,大小包含为y。然后,对于lambda公式中的OR/And语句,这是否与过滤dataeframe相同?

这是否有效(不使用
lambda
-函数):

我已经试过了

df = pd.DataFrame([['Blue', 25, 'Owner1'],
                   ['Blue', 55, 'Owner2'],
                   ['Green', 100, 'Owner3']],
                  columns=['Color', 'Size', 'Owner'])
得到了如下结果

   Color  Size   Owner   Check
0   Blue    25  Owner1     NaN
1   Blue    55  Owner2  Owner2
2  Green   100  Owner3     NaN
(使用
apply
时,
lambda
-函数只能接受一个参数。)


说明
(df['Color']=='Blue')
(df['Size']>50)
根据条件创建带有
True
/
False
值的系列(您可以打印它们)。这两个序列由逻辑的
(使用
&
)组合成一个新的序列,也包含
真值
/
假值
值(现在根据
-组合条件)。最后,列
df['Owner']
获取序列,并保留序列中具有
True
als值的所有行,并用
NaN
填充其余行。您可以在列上使用
apply
,但也可以在数据帧本身上使用它。如果使用数据帧,则需要提供一个轴(行或列)

f=lambda行:行['Owner']如果(行['Color']='Blue')和(行['Size']>50)否则为空


df['Check']=df.apply(f,axis=1)

我以前没见过那种格式。。。你能解释一下这是怎么回事吗?@RCarmody我试过了(见编辑)。我一直认为这是做这些事情的标准方法…谢谢!这样的解释更有意义。。。谢谢你的帮助!现在我学到了一些新东西!不过,我尽量减少lambda的使用。但是您可能不想使用
null
,而是想使用
np.NaN
None
   Color  Size   Owner   Check
0   Blue    25  Owner1     NaN
1   Blue    55  Owner2  Owner2
2  Green   100  Owner3     NaN