filtrando un dataframe en pandas

Tengo un dataframe de la siguiente manera:

dic ={'wteam': [2, 3, 4, 2, 4], 'lteam': [3, 4, 2, 4, 2]} pd.DataFrame(dic) lteam wteam 0 3 2 1 4 3 2 2 4 3 4 2 4 3 4 

Necesito un nuevo dataframe que tenga 2 en equipo o equipo.

  lteam wteam 0 3 2 2 2 4 3 4 2 

¿Cómo hago esto en los pandas?

Su salida de su df inicial es incorrecta, la última fila debería ser [2,4], aparte de eso, podemos llamar a loc en el índice generado por un df booleano filtrado y eliminar cualquier valor de NaN :

 In [15]: df.loc[df[df==2].dropna(thresh=1).index] Out[15]: lteam wteam 0 3 2 2 2 4 3 4 2 4 2 4 

Desglosando esto:

 In [16]: df[df==2] Out[16]: lteam wteam 0 NaN 2 1 NaN NaN 2 2 NaN 3 NaN 2 4 2 NaN In [17]: df[df==2].dropna(thresh=1) Out[17]: lteam wteam 0 NaN 2 2 2 NaN 3 NaN 2 4 2 NaN 

Un método más sucinto sería suministrar 2 condiciones booleanas:

 In [18]: df[(df.lteam == 2) | (df.wteam == 2)] Out[18]: lteam wteam 0 3 2 2 2 4 3 4 2 4 2 4 

Esto requiere usar el bitwise | Operador y corchetes alrededor de las condiciones debido a la precedencia del operador.

El primer método sería mejor si tiene muchas columnas, pero para su conjunto de datos simple, el último método estaría bien.