Pandas dataframe 根据索引和列值删除行

Pandas dataframe remove rows based on index and column value

我有一个名为 df 的多索引数据框,我想删除所有带有符号(多索引的第二级)= 'tb_91day_tri' 和权重(列)= 0 的行。我知道它是很容易按索引删除行和按列值删除行,但我不知道如何将两者结合起来。

                                             weight
asofdate   symbol                                  
2015-11-02 universe_tri                      0.000000
           tb_91day_tri                      0.053984
           tri_us78463x749                   0.051751
           tri_ca46431a109                   0.018860
           tri_ca46430l106                   0.067672
           tri_ca46430j101                   0.197639
           tri_ca46428l100                   0.151681
           tri_ca46428j105                   0.108409
           tse_300_bl_tri                    0.000000
           tb_91day_tri                      0.000000
           sp_500_tri                        0.000000


df.drop(df.xs('tb_91day_tri',level=1)[df.xs('tb_91day_tri',level=1)['weight']==0]) #doesn't work

你可以:

selection = df[df.weight!=0].drop('tb_91day_tri', level=1)