如何编写一个依赖于两个变量(列)的条件lambda函数?
我有一个数据集,叫做df,里面有两个变量,x和y。我想写一个函数,做以下事情:
如果x大于100并且y小于50,就返回x,否则返回y。
我之前在STATA里做数据分析,所以对pandas还比较陌生。如果有帮助的话,在STATA里可以这样写:
把x的值替换为:如果x大于100并且y小于50,就用x的值,否则用y的值。
换句话说,这个函数是根据df中的两个列来决定的,会根据条件是否满足,从每一行中返回一个变量的值。
到目前为止,我一直在通过新函数创建新变量,比如:
df.dummyVar = df.x.apply(lambda x: 1 如果 x > 100 否则 0)
我在StackOverflow和文档中找到的,都是如何对单个变量应用函数,或者对多个列使用轴选项。请帮帮我。
3 个回答
2
现在有一个非常简单的方法可以做到这一点。只需要在数据集上使用 apply 就可以了:
df['dummy'] = df.apply(lambda row: row['x'] if row['x'] > 100 and row['y'] < 50 else row['y'])
14
使用 where
:
df['dummyVar '] = df['x'].where((df['x'] > 100) & (df['y'] < 50), df['y'])
这样做会比使用 apply 操作快很多,因为它是向量化的。