python - 如何在 python 中编写以两个变量(列)为条件的 lambda 函数

标签 python lambda pandas conditional multiple-columns

我有一个数据集 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/

相关文章:

Python - 'get_sheet_by_name' 错误

python - 找不到正确的正则表达式语法来匹配换行符或字符串结尾

c# - AWS Lambda C# 上传对象到 S3

python - Pandas 将 NaN 替换为 None 表现出违反直觉的行为

python - pandas 数据格式保存 DateTimeIndex

python - Numpy:如何找到矩阵 A 中子矩阵的唯一局部最小值?

python - 如何使用 Group_Map 使用 Python 3 修复 Spark.SQL 中的 "Cannot use null as map key!"错误

java - 比较同一列表的两个列表元素之间的值

C++ 创建函数,就像变量一样,稍后更改其主体,然后再调用它

django - 将 Django QuerySet 转换为 Pandas Dataframe 并保持列顺序