首页 > 解决方案 > 在 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 value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我应该如何解决这个问题?

标签: pythonpandas

解决方案


您可以使用np.where(),它类似于 numpy/Pandas 的 if-then-else 语句,如下所示:

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

或者,由于您的Cash Reserve列已经设置并且您仅在某个条件下将其修改为 0,您也可以使用.loc[]

openOptions.loc[openOptions['OptionType'] == 'C', 'Cash Reserve'] = 0

甚至进一步简化,如下:

openOptions['Cash Reserve'][openOptions['OptionType'] == 'C'] = 0

推荐阅读