如果您有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的列,并希望一行一行地而不是每一列地这样做。
答案 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
详细信息 / 说明:
首先用ne
(DataFrame
)比较!=
的所有值:
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]