Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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 ValueError:在创建新列时,序列的真值不明确_Python_Pandas - Fatal编程技术网

Python ValueError:在创建新列时,序列的真值不明确

Python ValueError:在创建新列时,序列的真值不明确,python,pandas,Python,Pandas,使用Pandas 1.0中的assign,我想根据以下逻辑创建一个新的标志列: import numpy as np import pandas as pd df = pd.DataFrame({'val': [10, 2, 0, 1, 0.4, 2]}) df = df.assign( flag=lambda x: False if np.bool(x['val'] == 0) else True if np.bool(x['val'] < 0.5) else False )

使用Pandas 1.0中的
assign
,我想根据以下逻辑创建一个新的标志列:

import numpy as np
import pandas as pd

df = pd.DataFrame({'val': [10, 2, 0, 1, 0.4, 2]})
df = df.assign(
    flag=lambda x: False if np.bool(x['val'] == 0) else True if np.bool(x['val'] < 0.5) else False
)
相反,我得到:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

我尝试了np.where()、np.any()、np.all(),但没有得到预期的结果。

&
对按位和:

df = pd.DataFrame({'val': [10, 2, 0, 1, 0.4, 2]})

df = df.assign(flag= (df['val'] < 0.5) & (df['val'] != 0))

我认为可以跳过
lambda
df['val']<0.5
应该足够了。@HenryYik-是的,这取决于链。@HenryYik我更正了我的输出,当val=0时,输出应该是
False
。我不明白为什么我不能在lambda中指定一个更复杂的条件语句而不得到那个错误。
df = pd.DataFrame({'val': [10, 2, 0, 1, 0.4, 2]})

df = df.assign(flag= (df['val'] < 0.5) & (df['val'] != 0))
df = df.assign(flag=lambda x: (x['val'] < 0.5) & (x['val'] != 0))
print (df)
    val   flag
0  10.0  False
1   2.0  False
2   0.0  False
3   1.0  False
4   0.4   True
5   2.0  False