代码之家  ›  专栏  ›  技术社区  ›  matthewr

查找大熊猫行元素索引

  •  1
  • matthewr  · 技术社区  · 6 年前

    如果你有测向仪:

      apple   banana   carrot    
    a   1       2        3
    b   2       3        1
    c   0       0        1
    

    若要查找单元格等于0的列的索引,请执行以下操作: df[df['apple']==0].index 但是你能把这个换成C行的索引在0处吗?

    基本上,我需要删除c==0的列,并希望一行一行地执行此操作,而不是按每列执行。

    2 回复  |  直到 6 年前
        1
  •  1
  •   jezrael    6 年前

    如果需要测试行 c 并获取所有列,如果 0 :

    c = df.columns[df.loc['c'] == 0]
    print (c)
    Index(['apple', 'banana'], dtype='object')
    

    如果要测试所有行:

    c1 = df.columns[df.eq(0).any()]
    print (c1)
    Index(['apple', 'banana'], dtype='object')
    

    如果需要,删除列如果 在任何一行:

    df = df.loc[:, df.ne(0).all()]
    print (df)
       carrot
    a       3
    b       1
    c       1
    

    细节 / 解释 :

    首先比较 DataFrame 通过 ne ( != ):

    print (df.ne(0))
       apple  banana  carrot
    a   True    True    True
    b   True    True    True
    c  False   False    True
    

    然后获取所有行,如果 all True 排:

    print (df.ne(0).all())
    apple     False
    banana    False
    carrot     True
    dtype: bool
    

    最后过滤器 DataFrame.loc :

    print (df.loc[:, df.loc['c'].ne(0)])
       carrot
    a       3
    b       1
    c       1
    

    如果只需要测试 C 行解决方案类似,只有先选择 C 列队 loc 省略 全部的 :

    df = df.loc[:, df.loc['c'].ne(0)]
    
        2
  •  1
  •   Yuca    6 年前

    是的,你可以, df.T[df.T['c']==0]