Tengo problemas con los índices jerárquicos en el paquete Python pandas
. Específicamente, no entiendo cómo filtrar y comparar datos en filas después de que se haya pivotado.Filtrado y selección de tablas dinámicas hechas con pandas de pitón
Aquí está la tabla de ejemplo de la documentación:
import pandas as pd
import numpy as np
In [1027]: df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 6,
'B' : ['A', 'B', 'C'] * 8,
'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 4,
'D' : np.random.randn(24),
'E' : np.random.randn(24)})
In [1029]: pd.pivot_table(df, values='D', rows=['A', 'B'], cols=['C'])
Out[1029]:
C bar foo
A B
one A -1.154627 -0.243234
B -1.320253 -0.633158
C 1.188862 0.377300
three A -1.327977 NaN
B NaN -0.079051
C -0.832506 NaN
two A NaN -0.128534
B 0.835120 NaN
C NaN 0.838040
me gustaría analizar de la siguiente manera:
1) Filtrar esta tabla en la columna de atributos, por ejemplo, la selección de filas con 'foo' negativo :
C bar foo
A B
one A -1.154627 -0.243234
B -1.320253 -0.633158
three B NaN -0.079051
two A NaN -0.128534
2) comparar los valores de la serie B que queda entre el distinto A grupos de series? No estoy seguro de cómo acceder a esta información: {'uno': ['A', 'B'], 'dos': ['A'], 'tres': ['B']} y determinar qué serie Los valores B son únicos para cada clave, o se ven en múltiples grupos de claves, etc.
¿Hay alguna manera de hacerlo directamente dentro de la estructura de la tabla dinámica, o necesito convertir esto de nuevo en un marco de datos panda?
Gracias
edición: Creo que este código es un paso en la dirección correcta. Por lo menos me permite acceder a los valores individuales dentro de esta tabla, pero todavía estoy codificación dura de los valles de la serie:
table = pivot_table(df, values='D', rows=['A', 'B'], cols=['C'])
table.ix['one', 'A']
Gracias por sus comentarios. ¿Hay alguna manera de obtener una lista de valores en una columna de tabla dinámica especificando el encabezado? Puedo hacer esto en el dataframe con 'df [' A ']. Values' pero estoy luchando por obtener algo similar de la tabla dinámica – alexhli
el resultado de la tabla dinámica es un DataFrame. Entonces, simplemente puede hacer 'pivoted.bar.values' –
lo que me confunde es que cuando intento' pivoted.dtypes' veo información en la columna C, pero quiero ver las columnas A y B. Esperaba que hubiera una manera fácil de obtener el conjunto de valores B por cada valor A como '{'uno': ['A', 'B'], 'dos': ['A'], 'tres': ['B']} 'pero no veo nada de eso en la documentación de los pandas – alexhli