在pandas DataFrame中的任何位置搜索值

Jos*_*der 9 python dataframe pandas

这似乎是一个简单的问题,但是我之前找不到它(这个这个很接近,但是答案不是很好)。

问题是:如果我想在df中某处搜索值(我不知道它在哪一列中),然后返回所有具有匹配项的行。

什么是Pandaic最有效的方法?还有什么比以下更好的了:

for col in list(df):
    try:    
        df[col] == var
        return df[df[col] == var]
    except TypeError:
        continue 
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 13

您可以对整个DataFrame执行相等比较:

df[df.eq(var1).any(1)]
Run Code Online (Sandbox Code Playgroud)

另一个选择是使用numpy比较:

df[(df.values.ravel() == var1).reshape(df.shape).any(1)]
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 5

您应该使用isin,这是返回列,是要行检查冷'答案:-)

df.isin(['bal1']).any()
A        False
B         True
C        False
CLASS    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

要么

df[df.isin(['bal1'])].stack() # level 0 index is row index , level 1 index is columns which contain that value 
0  B    bal1
1  B    bal1
dtype: object
Run Code Online (Sandbox Code Playgroud)

  • 猜猜这将是df [df.isin(['bal1'])。any(1)]` (2认同)