我有一个数据集 df,它有两个变量 x 和 y。我想编写一个执行以下操作的函数:
x if x>100 and y<50 else y
我习惯用STATA做数据分析,所以对pandas做数据分析比较陌生。如果有帮助,在 stata 中它看起来像:
replace x = cond(x>100 & y<50, x, y)
换句话说,该函数以 df 中的两列为条件,并将根据是否满足条件从每行中的一个变量或另一个变量返回一个值。
到目前为止,我一直在通过新函数创建新变量,例如:
df.dummyVar = df.x.apply(lambda x: 1 if x>100 else 0)
使用 StackOverflow 和文档,我只能找到如何将依赖于单个变量的函数应用于多个列(使用轴选项)。请帮忙。
最佳答案
使用哪里
:
df['dummyVar '] = df['x'].where((df['x'] > 100) & (df['y'] < 50), df['y'])
这比执行应用操作要快得多,因为它是矢量化的。
关于python - 如何在 python 中编写以两个变量(列)为条件的 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24790676/