在数据框中查找字符串的索引和列号

Finding index and column number of strings in dataframe

我有一个数据框(多列),我想在数据框中找到某些字符串的确切(数字)位置。对于位置,我的意思是我想知道它的行号和列号(不是列名)。

让我们用下面的数据帧做一个例子df:

hi      apple   fine
right   yes     okay
maybe   apple   no   

我想找到所有苹果的位置,所以我想知道第 0 行第 1 列有一个 apple,第 2 行第 1 列有一个 apple

我怎样才能找到这些号码?

我开始寻找所有满足条件的地方,即该元素确实包含我正在寻找的字符串,其中:

df[df=='apple']

这很好,但我如何获得所有 True 的位置? 我试过这个 df.index[df=='apple'].tolist() 但它给出了一个错误,因为有多个列。我知道我可以通过 运行 遍历所有列的 for 循环来解决这个问题,但想知道是否有更直接的方法。 str.find() 也没有给我列号。我也研究了 get_loc 但这似乎只适用于索引。

您可以使用 np.argwhere:

print(np.argwhere(df.values == "apple"))

打印:

[[0 1]
 [2 1]]

作为列表:

print(np.argwhere(df.values == "apple").tolist())

打印:

[[0, 1], [2, 1]]