¿Cómo usar Groupby para crear una nueva columna con dos columnas asociadas? -- python campo con pandas campo con dataframe campo con pandas-groupby camp Relacionados El problema

How to use groupby to create a new column with two associated columns?


1
vote

problema

Español

Suponiendo que soy un vendedor de frutas que ha comprado 3 tipos de frutas por separado, ahora quiero calcular mi costo promedio y cuántas veces lo compré.

El flujo de datos de entrada es:

  data = {     'fruit':['apple', 'apple', 'banana', 'cherry', 'apple', 'banana'],      'unit_price':[10, 11.5, 5, 20, 12, 4.5],      'amount':[100, 200, 50, 300, 180, 90] } pandas.DataFrame(data)   

que se parece a esto:

      amount   fruit  unit_price 0     100   apple   10.0 1     200   apple   11.5 2      50  banana    5.0 3     300  cherry   20.0 4     180   apple   12.0 5      90  banana    4.5   

Por ejemplo, he comprado Apple 3 veces y el costo promedio es (100 * 10 + 200 * 11.5 + 180 * 12) / (100 + 200 + 180) = 11.375

aquí es lo que quiero:

       fruit  avg_cost  count 0    apple     11.375      3 1    banana    4.679       2 2    cherry    20.0        1   

Gracias por tu ayuda.

Original en ingles

Assuming I am a fruit seller who has bought 3 kind of fruits separately, Now I want to calculate my average cost and how many times I bought it.

The input dataframe is:

data = {     'fruit':['apple', 'apple', 'banana', 'cherry', 'apple', 'banana'],      'unit_price':[10, 11.5, 5, 20, 12, 4.5],      'amount':[100, 200, 50, 300, 180, 90] } pandas.DataFrame(data) 

Which looks like this:

    amount   fruit  unit_price 0     100   apple   10.0 1     200   apple   11.5 2      50  banana    5.0 3     300  cherry   20.0 4     180   apple   12.0 5      90  banana    4.5 

For example, I have bought apple 3 times and the average cost is (100*10 + 200*11.5 + 180*12)/(100+200+180)=11.375

Here is what I want:

     fruit  avg_cost  count 0    apple     11.375      3 1    banana    4.679       2 2    cherry    20.0        1 

Thanks for you help.

           

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

Use groupby :

  max-height3  
 

use groupby:

In [23]: def my_agg(df):     ...:     names = {'Count':df['unit_price'].count(),'avg_cost':((df['amount']*df['unit_price'])/df['amount'].mean()).mean()}     ...:     return pd.Series(names,names.keys())  In [27]: df.groupby('fruit').apply(my_agg).reset_index() Out[27]:      fruit   avg_cost  Count 0   apple  11.375000    3.0 1  banana   4.678571    2.0 2  cherry  20.000000    1.0 
 
 
   
   

Relacionados problema

-1  ¿Cómo uso Groupby sin hacer otros valores en la columna Nan?  ( How do i use groupby without making other values in the column nan ) 
Estoy tratando de obtener el valor más bajo de la "Fecha de inicio de la asignación" de la columna, según el "Empleado No" y el "Nombre del grupo de cliente" ...

1  Añadiendo filas para el año faltante por grupo en Pandas  ( Adding rows for missing year by group in pandas ) 
Tengo un marco de datos que se parece a esto pd.DataFrame({'A': ['C1', 'C1', 'C1', 'C1', 'C2', 'C2', 'C3', 'C3'], ...: 'date': [date(...

0  ¿Hay alguna manera de tener un grupo de devolución de datos por semana?  ( Is there a way to have a dataframe return groupings per week ) 
Tengo un proceso de datos que tiene información presentada como la tabla a continuación, la fecha es mi índice: date | Company | Industry | Focus 2...

-1  Tiempo de fila Diferencias Cálculo y concatenación por elemento mutuo en columna  ( Row time differences calculation and concatenation by mutual element in column ) 
MI DF se ve lo siguiente: action value created_by created ADD A Steven 10/2/20 6:46 AM ADD B Steven 13/2/2020 6:55...

0  Cómo usar Groupby a un gran valor similar  ( How to use groupby to group similar value ) 
Tengo el siguiente fragmento import pdfplumber, requests from io import BytesIO import pandas as pd def get_title_liked_txt(page: object): df = pd.Dat...

0  La forma más eficiente de las actividades de conteo de múltiples gemieras en grandes conjuntos de datos  ( Most efficient way of multi groupby count activities on large datasets ) 
Estoy tratando de encontrar subconjuntos (de cualquier longitud) de valores de atributo (columna), que son únicos en un conjunto de datos dado. La forma más e...

0  Pandas Groupby AGG aplica una función con múltiples parámetros  ( Pandas groupby agg apply a function with multiple parameters ) 
Cómo se puede aplicar una función en un Groupby Pandas que requiere parámetros de varias columnas del DataFrame Groupby y devuelve dos valores de escalador. ...

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...

0  Encuentra el valor más frecuente de cada 16 filas en Python  ( Find the most frequent value of every 16 rows in python ) 
Tengo un marco de datos que describe la altura de 800 personas, y quiero encontrar la altura más frecuente de cada 16 personas. Sé que puedo usar este siguien...

1  PD.Groupby en otro Groupby, transponiendo resultados de PD.CUT  ( Pd groupby on another groupby transposing results of pd cut ) 
Otra pregunta bastante complicada que estoy atascada con respecto a los pandas y su función grupal y cortada. La situación es la siguiente, digamos que tengo ...




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