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
相关产品推荐
相关产品推荐

