Python 3.x 如何传递字符串列表作为python中np.select()的条件?

Python 3.x 如何传递字符串列表作为python中np.select()的条件?,python-3.x,pandas,list,numpy,numpy-ndarray,Python 3.x,Pandas,List,Numpy,Numpy Ndarray,我有一个条件列表(“df['sample'].gt(0)和df['sample'].le(92666),df['sample'].gt(92667)和df['sample'].le(92734)”) 选择也是一个列表(“4444”、“5555”) 现在,当我使用df['newsample']=np.select(条件,选项,默认值=0) 我不断收到错误“TypeError:condlist中的无效条目0:应为布尔ndarray” 但是,当我手动键入条件时,它起作用了,当我使用列表作为condli

我有一个条件列表
(“df['sample'].gt(0)和df['sample'].le(92666),df['sample'].gt(92667)和df['sample'].le(92734)”)
选择也是一个列表
(“4444”、“5555”)
现在,当我使用
df['newsample']=np.select(条件,选项,默认值=0)
我不断收到错误
“TypeError:condlist中的无效条目0:应为布尔ndarray”


但是,当我手动键入条件时,它起作用了,当我使用列表作为condlist的数组时,问题似乎与引号有关,我如何解决这个问题?

您的条件需要生成一个布尔数组。差不多

conditions = [ df['sample'] > 0, df['sample']<92666 ...]
conditions=[df['sample']>0,df['sample']
这是一个字符串-请参见
“”
。外部的
()
不向表达式添加任何内容

("4444", "5555")     # tuple of strings
[4444, 5555]           # list of numbers
是包含2个字符串的元组。对于此用途,元组和列表是有效的

如果您键入:

choices = (df['sample'].gt(0) & df['sample'].le(92666) , df['sample'].gt(92667) & df['sample'].le (92734))
然后做了一个

print(choices)
您应该看到一个具有2个布尔值数据帧的元组


我认为您需要阅读更多的Python基础知识,以及您的
panad
阅读。Python语法和对象(如列表、字符串、元组)与Panda对象(如dataframe和series)一样重要。

是的,我的问题是,如果可能的话,我是否通过删除它生成的元组来将这些字符串转换为布尔值我同意您的看法,但是我遇到的问题是,我以前用于获取条件列表的函数使其成为字符串列表,而不是条件,是否有方法将该字符串列表转换为布尔条件,以便我可以使用np。select?@NandeepDevendra,字符串必须进行解析或求值。
numpy
函数无法为您执行此操作。
print(choices)