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)
我有一个名为 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)