在熊猫中找到行元素的索引

时间:2018-07-24 13:13:39

标签: python-3.x pandas

如果您有df:

  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 个答案:

答案 0 :(得分:1)

如果要测试行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')

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

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

详细信息 / 说明

首先用neDataFrame)比较!=的所有值:

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的{​​{1}}行,然后省略loc

all

答案 1 :(得分:1)

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