[英]Create Conditional column in Pandas data frame
I would like to create a calculated column which is as shown in line 1 but is 0 otherwise我想创建一个计算列,如第 1 行所示,否则为 0
openOptions['Cash Reserve'] = (openOptions['Quantity'] * openOptions['Strike'] * 100)
openOptions['Cash Reserve'] = 0 if (openOptions['OptionType'] == 'C') else openOptions['Cash Reserve']
I get an error:我收到一个错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
How should I resolve this?我应该如何解决这个问题?
You can use np.where()
, which is like an if-then-else statement for numpy/Pandas, as follows:您可以使用
np.where()
,它类似于 numpy/Pandas 的 if-then-else 语句,如下所示:
openOptions['Cash Reserve'] = np.where(openOptions['OptionType'] == 'C',
0,
openOptions['Cash Reserve'])
Alternatively, as your Cash Reserve
column has already been set up and you modify it to 0 only under a condition, you can also use .loc[]
:或者,由于您的
Cash Reserve
列已经设置并且您仅在某种条件下将其修改为 0,您也可以使用.loc[]
:
openOptions.loc[openOptions['OptionType'] == 'C', 'Cash Reserve'] = 0
Or even further simplified, as follows:甚至进一步简化,如下:
openOptions['Cash Reserve'][openOptions['OptionType'] == 'C'] = 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.