Python 跨列显示Lambda或/和语句
我正在尝试创建一个新的列[Check],查看我的[Color]列和[Size]列,说明如果颜色为蓝色且大小大于50,则该列应为所有者,否则留空 如果颜色=蓝色&大小>50,则[Owner]否则为空 我有以下资料: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
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