Pandas:如何在稀疏表中选择具有非零值的列

sin*_*ina 2 python pandas

我有一个包含 2000 列的稀疏表,我想选择几个特定的​​行及其非零值。我该怎么做?

    id       name   e1   e2   e3   e4 . . e550 . . e1200 .   e1760. . e2000
    1      engine1   0   0    0    2322   1300               140       0
    2      engine2   0   0  1230   0        0        2100              0
    .
    .
    .
    998000


df[df.name==engine2 & ? ]
    id    name      e3       e1200
    2   engine2    1230       2100   
Run Code Online (Sandbox Code Playgroud)

df[df.name==engine1 & ? ]

    id    name      e4       e550     e1760
    1   engine1    2322       1300      140
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

您可以过滤两次 - 首先按掩码过滤行m1,然后按列过滤m2。最后使用loc

m1 = (df['name'] == 'engine2')
m2 = (df[m1] != 0).all()

print (df.loc[m1,m2])
   id     name    e3  e1200
1   2  engine2  1230   2100
Run Code Online (Sandbox Code Playgroud)