¿Cómo obtener la media de un subconjunto de filas después de usar Groupby? -- python campo con pandas camp Relacionados El problema

How to get the mean of a subset of rows after using groupby?


1
vote

problema

Español

Quiero obtener el promedio de un subconjunto particular de filas en una columna en particular en mi flujo de datos.

puedo usar

  @Path("{p:/?}{ente:(([a-zA-Z]{3})?)}/getEnabledServices") public RicercheAttive getEnabledServices(@PathParam("ente") String ente) {     ... } 2  

Para obtener la media de las filas particulares que quiero de mi flujo de datos original, pero mi problema es que quiero realizar esta operación después de usar la operación de Groupby.

Estoy construyendo en

  @Path("{p:/?}{ente:(([a-zA-Z]{3})?)}/getEnabledServices") public RicercheAttive getEnabledServices(@PathParam("ente") String ente) {     ... } 3  

por lo que hay 11 valores devueltos en 'C' una vez que agrupo por columnas A y B y obtengo el promedio de esos 11 valores. En realidad, solo quiero obtener el promedio de los valores del 3 al 9 aunque, por lo tanto, idealmente lo que querría hacer es

  @Path("{p:/?}{ente:(([a-zA-Z]{3})?)}/getEnabledServices") public RicercheAttive getEnabledServices(@PathParam("ente") String ente) {     ... } 4  

Esto devolvería los 11 valores de la columna C para cada grupo de A, B y luego encontraría la media de los valores del 3 al 9, pero sé que no puedo hacer esto. El error sugiere usar el método Aplicar, pero parece que no puedo resolverlo.

Se apreciaría cualquier ayuda.

Original en ingles

I want to get the average of a particular subset of rows in one particular column in my dataframe.

I can use

df['C'].iloc[2:9].mean() 

to get the mean of just the particular rows I want from my original Dataframe but my problem is that I want to perform this operation after using the groupby operation.

I am building on

df.groupby(["A", "B"])['C'].mean() 

whereby there are 11 values returned in 'C' once I group by columns A and B and I get the average of those 11 values. I actually only want to get the average of the 3rd through 9th values though so ideally what I would want to do is

df.groupby(["A", "B"])['C'].iloc[2:9].mean() 

This would return those 11 values from column C for every group of A,B and then would find the mean of the 3rd through 9th values but I know I can't do this. The error suggests using the apply method but I can't seem to figure it out.

Any help would be appreciated.

     
 
 

Lista de respuestas

4
 
vote

Puede usar la función agg después del groupby y luego el subconjunto dentro de cada grupo y tome el mean :

  df = pd.DataFrame({'A': ['a']*22, 'B': ['b1']*11 + ['b2']*11, 'C': list(range(11))*2}) # A dummy data frame to demonstrate  df.groupby(['A', 'B'])['C'].agg(lambda g: g.iloc[2:9].mean())  # A   B  # a  b1    5 #    b2    5 # Name: C, dtype: int64    
 

You can use agg function after the groupby and then subset within each group and take the mean:

df = pd.DataFrame({'A': ['a']*22, 'B': ['b1']*11 + ['b2']*11, 'C': list(range(11))*2}) # A dummy data frame to demonstrate  df.groupby(['A', 'B'])['C'].agg(lambda g: g.iloc[2:9].mean())  # A   B  # a  b1    5 #    b2    5 # Name: C, dtype: int64  
 
 
2
 
vote

Pruebe esta variante:

  for key, grp in df.groupby(["A", "B"]):     print grp['C'].iloc[2:9].mean()   
 

Try this variant:

for key, grp in df.groupby(["A", "B"]):     print grp['C'].iloc[2:9].mean() 
 
 

Relacionados problema

-1  ¿Cómo lo convierto en este código OUTERHTML para sacar ciertos datos? (No sé cómo visualizarlo, así que quiero probar esto)  ( How do i loop over this outerhtml code to get out certain data i dont know ho ) 
Estoy tratando de obtener una lista que coincida con los distritos de la India a sus códigos de distrito, ya que fueron durante el censo de la población de 20...

2  Python MultiPhreading no aumenta la velocidad  ( Python multithreading doesnt increase speed ) 
Tengo 2 archivos separados que contienen las coordenadas de un lugar y el otro que contiene la calle y el código postal. Mediante el uso de pandas Quiero ...

0  Fusionar con el minuto más cercano usando Pandas  ( Merge with the nearest minute using pandas ) 
Simplemente quiero fusionar dos cuadros de datos dentro de ± 1 min. AQUÍ NAME_DF con el conjunto de datos de muestra: Name Date A 2/19/2019 17:1...

0  Coincidencia de cadenas en Python Pandas DataFrame cuando hay diferentes posibilidades  ( String match in python pandas dataframe when there is different possibilities ) 
Ingrese la descripción de la imagen aquí Tengo un conteo de datos (300,000 filas) con 4 columnas. Tengo una columna "Modelo" donde tengo los siguientes va...

1  Pandas DataFrame al diccionario con tuplas como clave y valores  ( Pandas dataframe to dictionary with tuples as key and values ) 
Necesito ayuda para hacer lo siguiente: Tengo un archivo CSV como lo siguiente, cargado en un Frame 'DF'. Hay varias regiones, diferentes valores para la me...

2  Pandas Groupby y Selector orden  ( Pandas groupby and selector order ) 
Di que tengo un contexto de datos con 3 columnas: Criteria Group Value 0 A 0 0.1 1 B 0 0.2 2 B 1 0.3 3 B ...

0  El valor de la verdad de una serie es ambiguo. ¿Cómo puedo arreglar este error? [duplicar]  ( The truth value of a series is ambiguous how do i fix this error ) 
Esta pregunta ya tiene respuestas aquí : El valor de la verdad de una serie es ambiguo. Use A.EMPTY,...

2  Cambiar filas en pandas  ( Change rows in pandas ) 
Tengo una matriz en marco de datos de Pandas print dfMatrix 0 1 2 3 4 0 10000 10 8 11 10 1 10 100000 ...

1  ¿Puedes usar Pandas Groupby para agrupar filas, determinado sumando un valor de columna?  ( Can you use pandas groupby to group rows determined by summing a column value ) 
Me gustaría agrupar filas en un contexto de datos por valores de una columna. El ejemplo dado a continuación sería si estuviera agrupando los valores de 'Numb...

8  Añadir la tasa de cambio a Pandas DataFrame  ( Add rate of change to pandas dataframe ) 
Tengo el siguiente fábrico de datos de Pandas: lastrun value 0 2013-10-24 13:10:05+00:00 55376 1 2013-...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos