Python 基于提供ValueError的函数创建新列

Python 基于提供ValueError的函数创建新列,python,Python,我有一个包含两列的数据框:一列包含零和一个值,另一列包含一个数值 ZeroOne Value 0 10 1 20 0 15 我们的目标是创建一个新列,如果ZeroOne列包含一个“0”,则将值列的值放入其中。如果零一值为1,则新列应为0。因此,在我的示例中,结果应该是: ZeroOne Value Result 0 10 10 1 20

我有一个包含两列的数据框:一列包含零和一个值,另一列包含一个数值

  ZeroOne   Value
    0       10
    1       20
    0       15
我们的目标是创建一个新列,如果ZeroOne列包含一个“0”,则将值列的值放入其中。如果零一值为1,则新列应为0。因此,在我的示例中,结果应该是:

  ZeroOne   Value   Result
   0        10          10
   1        20           0
   0        15          15
我试着做一个函数:

def function(a,b):
    if a == 1:
        return b
    else:
        return 0
然后做了变量a和b

    a = df['ZeroOne']
    b = df['Value']
在这之后,我用这个函数添加了一个新的列

   df['result'] = function(a,b)
它总是给我一个错误:

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

我怎样才能达到我的结果?我做错了什么?

尝试使用
where

将熊猫作为pd导入
df=pd.DataFrame.from_dict({“zerone”:[0,1,0],“Value”:[10,20,15]})
df['Result']=(df['Value']。其中(cond=df['ZeroOne']==0,other=0))
打印(df)
输出:

   Value  ZeroOne  Result
0     10        0      10
1     20        1       0
2     15        0      15

在这种情况下,您可以使用numpy库中的
np.where

df['Result'] = np.where(df['ZeroOne'] == 0, df['Value'], 0)
它类似于亚当斯解,但您也可以向它添加其他条件,函数中的第一个空格给出了条件,然后如果它是真的会发生什么,如果它是错的会发生什么。

如果
a.any()
:如果a==1,则改为