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

熊猫 - 许多条件的列表,带有逻辑运算符,与“选择”语句一起使用

熊猫 - 许多条件的列表,带有逻辑运算符,与“选择”语句一起使用

慕姐4208626 2022-09-20 16:40:34
我收到以下错误:值错误:具有多个元素的数组的真值是不明确的。使用 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]


查看完整回答
反对 回复 2022-09-20
  • 1 回答
  • 0 关注
  • 53 浏览
慕课专栏
更多

添加回答

举报

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