Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pd.eval()是否可以返回Nan或None,而不仅仅是True/False值?_Python_Pandas_Dataframe_Eval - Fatal编程技术网

Python pd.eval()是否可以返回Nan或None,而不仅仅是True/False值?

Python pd.eval()是否可以返回Nan或None,而不仅仅是True/False值?,python,pandas,dataframe,eval,Python,Pandas,Dataframe,Eval,我有一个缺少值的数据框,例如: My_var1 My_var2 My_var3 My_var4 0 No W6 No Nan 1 No W6 No Nan 2 No W6 No Yes 3 No W6 No No 4 No W6 Yes

我有一个缺少值的数据框,例如:

  My_var1   My_var2   My_var3   My_var4
0     No         W6        No       Nan
1     No         W6        No       Nan  
2     No         W6        No       Yes
3     No         W6        No        No
4     No         W6        Yes       No
"(My_var4 == 'Yes')"
我还有一系列以str格式存储的数据过滤器,例如:

  My_var1   My_var2   My_var3   My_var4
0     No         W6        No       Nan
1     No         W6        No       Nan  
2     No         W6        No       Yes
3     No         W6        No        No
4     No         W6        Yes       No
"(My_var4 == 'Yes')"
我将此过滤器与eval()一起使用以获得布尔级数:

my_data.eval(my_filter)
但是对于Nan值,eval函数返回False而不是Nan,但是我希望它返回Nan


如何将str筛选器应用于我的pd数据帧,并获得返回的True、False和Nan(或None)值?

eval
有一组非常有限的值,因此通常无法执行更复杂的逻辑表达式

要准确地了解你描述的行为是不可能的。也就是说,您将无法使用
eval
返回带有
True/False/NaN
的对象序列。我认为最接近的是带有
1/0/NaN
的float列。这需要一些心理体操来通过其
X!=X
为真,且X>1的np.arcin(X)确实返回
NaN

s = "(My_var4 == 'Yes') * arcsin((My_var4 != My_var4) + sin(1))"
df.eval(s)

0    NaN
1    NaN
2    1.0
3    0.0
4    0.0
Name: My_var4, dtype: float64