2016-12-18 4 views
1

У меня есть электронная DataFrame так:Панды Python: запрос и где на dataframe

RTD I 
BA 32  
CA 25  
BA 22 
CA 45  
NA 69 
BA 75 
BA 28 
VE 30 
BA 13 
BA 11 

Первое:

Test= (df.where(df.query('I>0 & RTD =="BA"')).dropna()) 

После того как я получить новый dataframe, без ценностей Nan, как это:

RTD I 
BA 32 
BA 22 
BA 75 
BA 28 
BA 13 
BA 11 

Хорошо. Число 32 присутствует в первой позиции. Если я спрошу: как долго число 32 отсутствует в фрейме данных после первого появления ?. Ответ должен быть: 5 раз. Как вы могли бы использовать панды?

Я попытался сделать:

len(df.loc[Test.last_valid_index():]) - 1 

, но он не работает

В сущности: как вы можете выполнить дополнительную команду на кадр данных, на котором выполняется запрос, без сохранения (например, «csv»), новый блок данных и действует на него?

+0

Пожалуйста, форматировать код Python как код Python. – DyZ

ответ

0

IIUC вы можете сделать это следующим образом:

In [76]: x 
Out[76]: 
    RTD I 
0 BA 32 
2 BA 22 
5 BA 75 
6 BA 28 
8 BA 32 # <-- NOTE: i have intentionally set it to `32` 
9 BA 11 

In [77]: len(x) - np.argwhere(x.I==32).max() - 1 
Out[77]: 1 

In [78]: len(x) - np.argwhere(x.I==32).min() - 1 
Out[78]: 5 
+0

Спасибо. Это работа – Andreas

+0

В вашем примере len (x) - np.argwhere (x.I == 32) .min() - 1 Он должен быть равен 3 – Andreas

 Смежные вопросы

  • Нет связанных вопросов^_^