为了账号安全,请及时绑定邮箱和手机立即绑定

用于标记数据的 Numpy 逻辑条件

用于标记数据的 Numpy 逻辑条件

慕神8447489 2021-12-17 16:04:51
我正在尝试基于现有数据中的多个条件创建另一个标签列dfind group people value value_50 val_minmax 1     1    5    100    1        10 1     2    2    90     1        na 2     1    10   80     1        80 2     2    20   40     0        na 3     1    7    10     0        10 3     2    23   30     0        naimport pandas as pd import numpy as np df = pd.read_clipboard()然后尝试根据以下条件在行上放置标签df['label'] = np.where(np.logical_and(df.group == 2, df.value_50 == 1, df.value > 50), 1, 0)但它给了我一个错误TypeError: return arrays must be of ArrayType如何在python中执行它?
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

&面具之间的使用:


df['label'] = np.where((df.group == 2) & (df.value_50 == 1) & (df.value > 50), 1, 0)

选择:


df['label'] = ((df.group == 2) & (df.value_50 == 1) & (df.value > 50)).astype(int)

如果reduce与布尔掩码列表一起使用,您的解决方案应该可以工作:


mask = np.logical_and.reduce([df.group == 2, df.value_50 == 1, df.value > 50])

df['label'] = np.where(mask, 1, 0)

#alternative

#df['label'] = mask.astype(int)


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信