Python 在数据框中创建条件列

Python 在数据框中创建条件列,python,pandas,Python,Pandas,我想创建一个计算列,如第1行所示,否则为0 openOptions['Cash Reserve'] = (openOptions['Quantity'] * openOptions['Strike'] * 100) openOptions['Cash Reserve'] = 0 if (openOptions['OptionType'] == 'C') else openOptions['Cash Reserve'] 我得到一个错误: ValueError: The truth valu

我想创建一个计算列,如第1行所示,否则为0

 openOptions['Cash Reserve'] =  (openOptions['Quantity'] * openOptions['Strike'] * 100)
 openOptions['Cash Reserve'] = 0 if (openOptions['OptionType'] == 'C') else openOptions['Cash Reserve']
我得到一个错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我应该如何解决这个问题?

您可以使用,这类似于numpy/Pandas的if-then-else语句,如下所示:

openOptions['Cash Reserve'] = np.where(openOptions['OptionType'] == 'C',
                                       0,
                                       openOptions['Cash Reserve'])
openOptions['Cash Reserve'][openOptions['OptionType'] == 'C'] = 0
或者,由于您的
现金储备
列已经设置,并且您仅在一定条件下将其修改为0,因此您还可以使用:

或者进一步简化,如下所示:

openOptions['Cash Reserve'] = np.where(openOptions['OptionType'] == 'C',
                                       0,
                                       openOptions['Cash Reserve'])
openOptions['Cash Reserve'][openOptions['OptionType'] == 'C'] = 0