首页 > 解决方案 > 忽略使用熊猫“where”提出的字符串

问题描述

我想知道当我将值从数字重新标记为字符串时,是否有一种方法可以跳过字符串:

s = pd.Series(np.arange(1,100,1))

我想要做的是从我的样本数据中获得第一个和第二个标准偏差:

s = s.where((s <= s.std() *1) & (s >= s.std() *-1), "1_StDev", errors="ignore")
s = s.where((s <= s.std() *2) & (s >= s.std() *-2), "2_StDev", errors="ignore")

但似乎我的代码仍然返回错误,尽管将错误参数设置为"ignore".

另外,我想知道pd.cut这里是否可行。如果是这样,请教我怎么做。

标签: pythonpython-3.xpandas

解决方案


在这里,您可以使用np.select

conditions = [(s <= s.std() *1) & (s >= s.std() *-1), 
              (s <= s.std() *2) & (s >= s.std() *-2)]
choices = ["1_StDev", "2_StDev"]

s = pd.Series(np.select(conditions, choices))

对于条件不匹配的值,最好将默认值设置为@Chris 建议的值。

s = pd.Series(np.select(conditions, choices, default=s))

推荐阅读