【发布时间】:2021-04-08 09:20:20
【问题描述】:
我正在尝试从其他列实现基于列或某些条件,基本上,如果满足这些条件中的任何一个,结果应该在 NEW 列中为 NO,否则为 YES;即使我使用“或”代替“|”,我怎么会出现大量错误,任何人都可以帮助实现这一点,因为我尝试过的不同方法似乎不起作用
sales["NEW"]=np.where((sales.Status=='Done' |
sales.Status=='out' |
sales.Status=='in' |
sales.sumPaid>dailyAmount |
sales.days<14), 'No','Yes')
sales["NEW"]=np.where((sales.Status==('Done|out |in') | sales.sumPaid>dailyAmount |sales.days<14), 'No','Yes')
TypeError Traceback(最近调用 最后的) C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py 在 na_logical_op(x, y, op) 273 # (xint or xbool) and (yint or bool) --> 274 结果 = op(x, y) 275 除了类型错误:
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\rooper.py 在 ror_(左,右) 55 def ror_(左,右): ---> 56 返回 operator.or_(right, left) 57
TypeError: |: 'str' 和 'str' 的操作数类型不受支持
在处理上述异常的过程中,又发生了一个异常:
TypeError Traceback(最近调用 最后的) C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py 在 na_logical_op(x, y, op) 287 尝试: --> 288 结果 = libops.scalar_binop(x, y, op) 289 除外(
pandas_libs\ops.pyx in pandas._libs.ops.scalar_binop()
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\rooper.py 在 ror_(左,右) 55 def ror_(左,右): ---> 56 返回 operator.or_(right, left) 57
TypeError: |: 'bool' 和 'str' 的操作数类型不受支持
在处理上述异常的过程中,又发生了一个异常:
TypeError Traceback(最近调用 最后)在 212 213 销售["新"]=np.where((销售.状态=='完成'| --> 214 销售。状态=='out' | 215 销售。状态=='在' | 216 sales.sumPaid>dailyAmount |
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\common.py 在 new_method(self, other) 中 62 其他 = item_from_zerodim(其他) 63 ---> 64 返回方法(自我,其他) 65 66 返回新方法
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops_init_.py 在包装器中(自我,其他) 547 rvalues = extract_array(其他,extract_numpy=True) 548 --> 549 res_values = logical_op(左值,右值,操作) 第550章 551
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py 在logical_op(左,右,op) 第364章 365 --> 366 res_values = na_logical_op(左值,右值,操作) 第367章 368
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py 在 na_logical_op(x, y, op) 296 类型 = 类型(y)。名称 第297章 --> 298 f“无法使用 dtyped [{x.dtype}] 数组执行 '{op.name}'” 第299章 300)
TypeError: 无法使用 dtyped [object] 数组执行 'ror_' 和 [bool] 类型的标量
【问题讨论】:
-
使用括号
(sales.Status=='Done') | (sales.Status=='out') | ... -
旁白:避免将列引用为带有句点的属性。请参阅attribute access 下的警告。始终使用
[]访问列(即sales["Status"])。