python - 使用 pandas 应用多个 boolean 掩码以设置列中的值的有效方法

标签 python pandas dataframe boolean

我有几个表达式可以选择数据框中的某些行 (df) 并返回多个 boolean 数组,如果您愿意,可以掩码。我想向此数据框添加一个新列,并根据这些掩码用普通整数(“成员资格”指示符)填充它。在最直接的方法中,我将使用此代码:

df.assign(membership=3)
df[mask1].membership = 0
df[mask2].membership = 1
df[mask3].membership = 2

这应该会产生一个列 (df["membership"]),如下所示:

1    0
2    0
3    1
4    1
5    3
Name: membership, dtype: int64

掩码由函数创建(使用数据框中的附加列来创建输出)作为字典,如下所示:

maskDict = {0:mask1, 1:mask2, 2:mask3}

其中 mask(1..3) 是包含 [True,False,...] 等大小的数组

我知道可能不需要改进代码。然而,当比较更多的条件时,我最终会在字典中得到更多的 boolean 数组。

将函数应用于数据框并设置这些值的就地解决方案也将受到赞赏。

最佳答案

使用numpy.select :

df["membership"] = np.select([mask1, mask2, mask3], [0,1,2], default=3)

如果输入是dict:

df["membership1"] = np.select(list(maskDict.values()), list(maskDict.keys()), default=3)

关于python - 使用 pandas 应用多个 boolean 掩码以设置列中的值的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46844812/

相关文章:

python - 在 pandas 中将一列连接到另一列的末尾后获取列的平均值

python - 根据下一个值更新 Pandas 数据框

python - 如何从 Pandas 数据框中删除方括号

python - 当一列与其他列分开时如何选择 DataFrame 列?

python - Pandas "if X not in DataFrame"总是抛出错误

Python 脚本不遍历数组

python - 为什么我收到此错误 "ValueError: cannot reindex from a duplicate axis"?

Python 正则表达式返回空字符串而不是结果

python - 如何将 RGB 值转换为 Phillips Hue 灯泡的 XY 值

python - 使用pandas python将带有sheet2中出现次数的关键字添加到sheet1中的现有excel文件中