2016-07-06 3 views
1

EDIT: Оказывается, мой первоначальный вопрос был просто проблемой с версиями. Тем не менее, в ходе ответа на мой первоначальный вопрос, были рассмотрены некоторые другие вопросы, поэтому я перефразировать вопросы и перечислил их ниже:Выбор панд по вызываемым номерам

  1. Я Познакомившись с некоторыми возможностями панд, а именно selection by callables. В документах рекомендуется использовать лямбда-функции, например. чтобы извлечь все образцы в dataframe df1 с значением> 0 для функции «A»:

    df1.loc[lambda df: df.A > 0, :] 
    

    есть более компактный, вещий способ сделать это?

  2. Предположим, что df1 теперь является фреймворком данных с функцией A, но значения представляют собой смешанные двойники и тройки (2- и 3-кортежи). Как я могу извлечь образцы, которые содержат только парные? Я пробовал делать это как df1.loc[len(df1.A)>2,:], но ясно, что панды не транслируют значения так, как я ожидаю.

+2

Для меня это работает хорошо. Возможно, перезапустите 'anaconda' или другую среду IDE. – jezrael

+0

Вы уверены, что хотите обновить? Можете ли вы подтвердить это, набрав pd .__ version__? – ayhan

+0

Он работает, как ожидалось, на моей машине. Я использую панды 0.18.1. –

ответ

1

Необходимо перезагрузить IDE.

Ваш другой question:

apply Использование с len:

import pandas as pd 

data = {'A': [(1,2), (1,2), (1,2), (1,2), (1,2,4), (1,2,3)], 
     'B': [13, 98, 23, 45, 64, 10]} 

df = pd.DataFrame(data) 

print (df) 
      A B 
0  (1, 2) 13 
1  (1, 2) 98 
2  (1, 2) 23 
3  (1, 2) 45 
4 (1, 2, 4) 64 
5 (1, 2, 3) 10 

print (df[df.A.apply(len) >2]) 

      A B 
4 (1, 2, 4) 64 
5 (1, 2, 3) 10 
+0

Отлично, спасибо за подсказку, используя 'apply'! – itf

1

Вы можете делать то, что вы хотите сделать без лямбда-функции, а именно:

df1.loc[df1.A>0,:] 

Возможно, документы устарели.

+0

Спасибо! Ниже приведен следующий вопрос: скажем, df1 теперь является фреймворком данных с функцией A, но значения представляют собой смешанные двойники и тройки (2- и 3-кортежи). Как я могу извлечь образцы, которые содержат только парные? Я попытался сделать это как df1.loc [len (df1.A)> 2 ,:], но ясно, что pandas не передает значения так, как я ожидаю. – itf

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