Python:基于条件选择行

Python:基于条件选择行,python,pandas,Python,Pandas,我有一个熊猫数据框,格式如下: df.head() y y_pred 599 0 0 787 9 9 47 2 2 1237 1 1 1069 6 6 我想找到行/索引号-其中y!=是的 我正试图通过选择来执行此操作,但无法执行此操作。请帮忙 TIA试试: df.index[df.y != df.y_pred] 让我们更改您的示例数据 df.iloc[0, 0] = 1 df.iloc[3, 1] = 0 pr

我有一个熊猫数据框,格式如下:

df.head()

        y   y_pred
599     0   0
787     9   9
47      2   2
1237    1   1
1069    6   6
我想找到行/索引号-其中y!=是的

我正试图通过
选择
来执行此操作,但无法执行此操作。请帮忙

TIA

试试:

df.index[df.y != df.y_pred]

让我们更改您的示例数据

df.iloc[0, 0] = 1
df.iloc[3, 1] = 0
print(df)

      y  y_pred
599   1       0
787   9       9
47    2       2
1237  1       0
1069  6       6
然后试试我们的代码

df.index[df.y != df.y_pred]

Int64Index([599, 1237], dtype='int64')

为了提高效率,请使用底层的
numpy
数组

df.index.values[df.y.values != df.y_pred.values]

array([ 599, 1237])
您可以使用返回
df
子集

df.loc[(df.y != df.y_pred).values]

      y  y_pred
599   1       0
1237  1       0
使用:

样本:

print (df)
      y  y_pred
599   0       1 <-values changed for match
787   9       9
47    2       2
1237  1       1
1069  6       3 <-values changed for match

df = df.query('y != y_pred').index
print (df)
Int64Index([599, 1069], dtype='int64')
或者别的

对于检查不同的值:

print (df.query('y != y_pred'))
      y  y_pred
599   0       1
1069  6       3

print (df[df.y != df.y_pred])
      y  y_pred
599   0       1
1069  6       3

我重新开始这个问题,因为它是关于过滤的,但不同的是输出是
索引
很高兴能帮助你们!天气真好!
df1 = df[df.y != df.y_pred].index
print (df1)
Int64Index([599, 1069], dtype='int64')
print (df.query('y != y_pred'))
      y  y_pred
599   0       1
1069  6       3

print (df[df.y != df.y_pred])
      y  y_pred
599   0       1
1069  6       3