我正在尝试基于现有数据中的多个条件创建另一个标签列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)
添加回答
举报
0/150
提交
取消