我收到以下错误:值错误:具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.全部 ()似乎找不到解决方案。请帮忙。import numpy as npimport pandas as pdt = np.arange(0,100,1); t = pd.Series(t)y = np.random.randint(1,20,100); y = pd.Series(y)df = pd.DataFrame({'t': t,'y': y})mean = np.mean(df['y'])st_dev = np.std(df.y)conds = [(df['y'].values > mean + 3*st_dev), (df['y'].values < mean - 3*st_dev), (df['y'].values <= (mean + 3*st_dev) and (mean - 3*st_dev) <= df['y'].values )]choices = [1,0,2]
1 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
问题是使用标量,这里对于按位是必要的,也是必要的添加,因为优先级运算符:and&AND()
conds = [(df['y'].values > mean + 3*st_dev), (df['y'].values < mean - 3*st_dev),
(df['y'].values <= (mean + 3*st_dev)) & ((mean - 3*st_dev) <= df['y'].values )]
choices = [1,0,2]
df['new'] = np.select(conds, choices)
print (df)
t y new
0 0 4 2
1 1 2 2
2 2 13 2
3 3 8 2
4 4 14 2
.. .. .. ...
95 95 5 2
96 96 10 2
97 97 8 2
98 98 6 2
99 99 16 2
[100 rows x 3 columns]
添加回答
举报
0/150
提交
取消