2017-03-31 124 views
2

我有以下格式的大熊猫据帧行:Python的大熊猫:基于标准

df.head() 

     y y_pred 
599  0 0 
787  9 9 
47  2 2 
1237 1 1 
1069 6 6 

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

我想通过Select来做,但我无法做到。请帮忙。

TIA

+0

我重新打开的问题,因为它是关于过滤,但不同的是输出为'index' – jezrael

回答

3

使用query返回df子集:

df = df.query('y != y_pred').index 

样品:

与个
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') 

解决办法是:

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

或者其他answer

为了检查不同的值:

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 
+0

很高兴能帮助你!美好的一天! – jezrael

2

尝试:

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.loc[(df.y != df.y_pred).values] 

     y y_pred 
599 1  0 
1237 1  0