Pandas按其他列条件提取单列数据生成新列报错求助
报错原因
- pandas 中对 Series 做布尔逻辑运算时,不能使用 Python 原生的
and/or关键字,必须改用位运算符&(与)、|(或) - 位运算符优先级高于比较运算符,每个独立的布尔判断条件必须用小括号包裹,否则会先执行位运算导致逻辑错误,触发ambiguous报错
- 你原有写法仅会给满足条件的行赋值,不满足条件的行最终会得到NaN,不是你需要的0
可行实现方案
使用numpy.where实现按条件赋值的逻辑,符合你给出的规则,完整代码如下:
import pandas as pd import numpy as np # 请先确认你DataFrame的列名和下方代码保持一致,若列名带空格请对应修改 CMM['0 to 30'] = np.where((CMM['Age'] > 0) & (CMM['Age'] <= 30), CMM['Open_Balance'], 0) CMM['30 to 60'] = np.where((CMM['Age'] > 30) & (CMM['Age'] <= 60), CMM['Open_Balance'], 0) CMM['Negative_amount'] = np.where(CMM['Age'] < 0, CMM['Open_Balance'], 0)
运行后得到的结果和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Srisai Runkana
相关产品推荐
相关产品推荐

