如何在熊猫数据框中查找非零元素的行和列

时间:2020-06-07 11:55:59

标签: python pandas

我有一个熊猫数据框,看起来像这样:

Type    All    Fail     Pass
 A       0       0        0
 B       1       0        0
 C       0       0        0

现在,我想获取非零元素的列名以及Type列中的对应值。因此,在这种情况下,我想返回BAll。我知道如何使用此compare_severity.select_dtypes(include=['number']) != 0返回一个真/假矩阵。但是我不确定如何获取True元素的列名和行索引。有谁知道该怎么做?

3 个答案:

答案 0 :(得分:1)

看看是否有帮助,

df = df.set_index("Type")
result = df.where(df.select_dtypes(include="number") > 0) \
    .fillna("") \
    .to_dict(orient='index')

print({k:i for k, v in result.items() for i, j in v.items() if j})

输出

{'B': 'All'}

答案 1 :(得分:1)

我们可以在此处将idxmaxdropna一起使用:

num = df.select_dtypes('number')
num.where(num.ne(0)).idxmax().dropna()

All    1.0
dtype: float64

或者我们也可以使用np.where来给我们提供索引:

df.columns[np.where(num)[0]].tolist()

['All']

答案 2 :(得分:0)

解决此问题的一种方法是找到数据框等于1的行以及数据框等于1的列。您必须将Type设置为索引,以确保相等检查为专注于数字列。

df = df.set_index("Type")

df.loc[df.eq(1).any(axis=1),df.eq(1).any()]


       All
Type    
 B      1