首页 > 解决方案 > Pandas 根据条件返回索引和列名

问题描述

假设我们有一个 DataFrame:

df = pd.DataFrame({
    'D': {'A': 0.810032, 'B': 0.752299, 'C': 0.224038},
    'E': {'A': 0.17714, 'B': 0.680405, 'C': 0.769732},
    'F': {'A': 0.942959, 'B': 0.436582, 'C': 0.269791}
})
print(df)
          D         E         F
A  0.810032  0.177140  0.942959
B  0.752299  0.680405  0.436582
C  0.224038  0.769732  0.269791

是否可以根据条件将索引和列名返回到元组列表中,例如

print(df < 0.25)
   D      E      F
A  False   True  False
B  False  False  False
C  True  False  False

我想最终得到一个元组列表,例如:

[('A','E'),('C','D')]

标签: pythonpandas

解决方案


我们还可以使用DataFrame.wherethen stack,它利用了默认情况下stack删除NaN值然后用于Index.tolist获取元组列表的事实:

results = df.where(df < .25).stack().index.tolist()

results

[('A', 'E'), ('C', 'D')]

推荐阅读