如何用Pandas/Numpy匹配CPT代码计算价格差额并解决行不匹配报错?
问题解决步骤
1. 修正代码语法错误
你编写的np.where语句存在括号位置错误,多余的右括号破坏了语法结构,这是直接引发错误的原因。修正后的代码如下:
# 先确认列名与数据集一致,假设"总核准金额"对应代码中的LINE_TOTAL_ALLOWED df['核准差额'] = np.where( df['LINE_TOTAL_ALLOWED'] == df['NEW_PRICE'] * 15, 0, df['LINE_TOTAL_ALLOWED'] - df['NEW_PRICE'] * 15 )
2. 确认列名匹配
你的数据集表格中列名为总核准金额,但代码里用的是LINE_TOTAL_ALLOWED,如果两者不对应,必须替换为数据集实际的列名。比如数据集列名为中文时,代码要改成:
df['核准差额'] = np.where( df['总核准金额'] == df['NEW_PRICE'] * 15, 0, df['总核准金额'] - df['NEW_PRICE'] * 15 )
3. 清理重复CPT列
数据集中存在CPT Code和CPT_CODE两个重复列,容易导致后续处理歧义,建议先清理:
# 删除其中一个重复列,根据需求选择保留哪一列 df = df.drop(columns=['CPT_CODE'])
4. 完善CPT匹配逻辑(若需)
如果NEW_PRICE不是每行自带的,而是单独的CPT-新价格映射表,需要先通过CPT代码合并数据:
# 示例CPT-新价格映射表 cpt_price_map = pd.DataFrame({ 'CPT Code': ['90887', ...], # 你的20个CPT代码 'NEW_PRICE': [153, ...] # 对应新价格 }) # 通过CPT Code合并数据集与映射表 df = df.merge(cpt_price_map, on='CPT Code', how='left')
完成上述步骤后重新运行计算代码,即可得到正确的应付款差额。
内容的提问来源于stack exchange,提问作者C GVerg
相关产品推荐
相关产品推荐

