获取 pandas 数据框中每个单元格的索引名称和列名称

Zac*_*ack 2 python dataframe pandas

我有一个填充了 True/False 值的数据框。我想迭代数据帧的每个单元格,如果值为 True,则返回该单元格位置的索引名称和列名称(或者返回它们的行和列索引)。

  • 我认为可能有一种快速的 pandas 方式使用dataframe.applymap返回单元格的列、行的函数,但我不知道如何调用特定单元格的索引和列名称。.iloc[]基本上就像反向寻找一样。
  • 否则我会很高兴得到一个数据帧,它是一个单独的数据帧,包含所有真实值。

Ayo*_*ROU 5

您可以尝试融化(pd.melt)您的数据框,同时将索引保留为变量:

df = pd.DataFrame(
    np.random.choice([True, False], (5, 5)), columns=list("abcde"), index=list("fghij")
)
#   a   b   c   d   e
# f False   True    True    True    False
# g True    True    False   False   True
# h False   True    True    False   False
# i True    True    False   False   False
# j True    True    False   True    True


df.reset_index().melt(id_vars='index').query('value == True')

Run Code Online (Sandbox Code Playgroud)

输出:

  index variable value
1   g   a   True
3   i   a   True
4   j   a   True
5   f   b   True
6   g   b   True
7   h   b   True
8   i   b   True
9   j   b   True
10  f   c   True
12  h   c   True
15  f   d   True
19  j   d   True
21  g   e   True
24  j   e   True

Run Code Online (Sandbox Code Playgroud)