Python Pandas:根据条件选择行

chh*_*bbz 2 python pandas

我有一个以下格式的 pandas DataFrame:

df.head()

        y   y_pred
599     0   0
787     9   9
47      2   2
1237    1   1
1069    6   6
Run Code Online (Sandbox Code Playgroud)

我想找到行/索引号 - 其中 y != y_pred。

我正在努力做到这一点,Select但无法做到。请帮忙。

TIA

jez*_*ael 5

使用query:

df = df.query('y != y_pred').index
Run Code Online (Sandbox Code Playgroud)

样本:

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')
Run Code Online (Sandbox Code Playgroud)

解决方案有boolean indexing:

df1 = df[df.y != df.y_pred].index
print (df1)
Int64Index([599, 1069], dtype='int64')
Run Code Online (Sandbox Code Playgroud)

或者另一个答案。

要检查不同的值:

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
Run Code Online (Sandbox Code Playgroud)