You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中数据筛选后生成pivot透视表筛选规则未生效问题求助

问题根因

你编写的筛选表达式仅会返回符合规则的临时DataFrame结果,不会修改原始的bonds数据集,你没有将筛选结果赋值给变量,后续生成透视表时依然调用了未筛选的原始数据,因此筛选规则没有生效。

修正代码

你只需要将筛选结果赋值回变量即可,若需要保留原始数据集可赋值给新变量避免覆盖:

# 方式1:直接覆盖原变量
bonds = bonds[(bonds['Checkpoint'] == 1) 
      & (bonds['Volcker Desk'] != "FX CASH")
     & (bonds['Volcker Desk'] != "NMRC")]

# 方式2:赋值给新变量,保留原始bonds数据
# filtered_bonds = bonds[(bonds['Checkpoint'] == 1) 
#       & (bonds['Volcker Desk'] != "FX CASH")
#      & (bonds['Volcker Desk'] != "NMRC")]

bonds=pd.pivot_table(
    bonds,
    index=['rating'],
    columns=['Bond Type'],
    values=['Holding Amt 1'],
    aggfunc='sum'
)

bonds
代码优化建议
  • 多值不等于判断可以用isin()方法简化写法,减少冗余代码:
    bonds = bonds[(bonds['Checkpoint'] == 1) & ~bonds['Volcker Desk'].isin(["FX CASH", "NMRC"])]
    
  • 筛选完成后可输出bonds.shape对比筛选前后的行数,提前校验筛选规则是否生效,避免后续操作基于错误数据集执行。

内容的提问来源于stack exchange,提问作者pucktack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:00:03