首页 > 解决方案 > 如何根据条件 pd.Dataframe 获取行名和列名

问题描述

坚持应该很简单的事情。我正在尝试找到一种方法来获取满足某个条件的行和列名pd.Dataframe。比如给我某个值出现的地方:

  A  | B | C |D
1 'N' 'S' 'E' 'y'
2 'X' 'C' 'W' 'R'

现在我想知道'S'在哪里 - 1B(也可能是,1,B)

我试过只使用子集作为data[data =='x'].index 等,但它只返回所有索引。我也尝试过使用pd.where并得到了相同的结果。

标签: python-3.xpandasdataframefind

解决方案


要查找单个事件:

res = df.where(df=='S').dropna(how='all').dropna(axis='columns',how='all')
[ f'{r}{c}' for r,c in zip(res.index, res.columns)]

输出:

['1B']


以下也适用于多次出现:

import numpy as np
[f'{df.index[r]}{df.columns[c]}' for r,c in np.argwhere(df.to_numpy()=='S')]

例子:

   A  B  C  D
1  N  S  E  S
2  X  C  W  S

输出:

['1B', '1D', '2D']

推荐阅读