una seleccionar nueva insertar filtrar filas datos data columnas columna añadir agregar python filter pandas

python - seleccionar - pandas dataframe



¿Cómo se filtran los dataframes pandas por múltiples columnas (2)

Para filtrar un marco de datos (df) por una sola columna, si consideramos datos con hombres y mujeres, podríamos:

males = df[df[Gender]==''Male'']

Pregunta 1: ¿Pero qué pasaría si los datos abarcaran varios años y solo quisiera ver a los hombres para 2014?

En otros idiomas, podría hacer algo como:

if A = "Male" and if B = "2014" then

(excepto que quiero hacer esto y obtener un subconjunto de la dataframe original en un nuevo objeto de marco de datos)

Pregunta 2. ¿Cómo hago esto en un bucle y creo un objeto de marco de datos para cada conjunto único de año y género (es decir, un df para: 2013-Hombre, 2013-Mujer, 2014-Masculino y 2014-Mujer

for y in year: for g in gender: df = .....


Para funciones booleanas más generales que le gustaría usar como filtro y que dependen de más de una columna, puede usar:

df = df[df[[''col_1'',''col_2'']].apply(lambda x: f(*x), axis=1)]

donde f es una función que se aplica a cada par de elementos (x1, x2) de col_1 y col_2 y devuelve True o False dependiendo de cualquier condición que desee (x1, x2).


Usando & operador, no te olvides de envolver las declaraciones secundarias con () :

males = df[(df[Gender]==''Male'') & (df[Year]==2014)]

Para almacenar sus dataframes en un dict usando un bucle for:

from collections import defaultdict dic={} for g in [''male'', ''female'']: dic[g]=defaultdict(dict) for y in [2013, 2014]: dic[g][y]=df[(df[Gender]==g) & (df[Year]==y)] #store the DataFrames to a dict of dict

EDITAR:

Una demostración para tu getDF :

def getDF(dic, gender, year): return dic[gender][year] print genDF(dic, ''male'', 2014)