Как создать новый столбец итогов (sumif) в кадре данных pandas? - PullRequest
0 голосов
/ 05 мая 2020

Я хочу создать простую статистику c для кухни, и для этого у меня есть df / table следующего вида:

meal       ingredient  how_much  in_fridge
ham&eggs   ham         8         6
ham&eggs   egg         24        10
ham&eggs   salt        4         2
salad      cutecumber  16        3  
salad      shrimps     12        4
salad      oil         4         1
...

Используя функцию groupby, я могу подытожить, как сколько ингредиентов мне нужно и сколько у меня в холодильнике для каждого приема пищи.

df.groupby('meal').sum()

результат будет выглядеть следующим образом:

meal       how_much  in_fridge
ham&eggs   36        18
salad      32        8
...

Теперь для каждого приема пищи я хочу знать, сколько заправок -уровень ингредиентов в холодильнике, рассчитав процент: fill_level = in_fridge / how_much * 100.

Результат должен выглядеть так:

meal       how_much  in_fridge fill_level
ham&eggs   36        18        50
salad      32        8         25
...

Я также хотел бы присоединить процентное соотношение в моем origin df , чтобы я мог видеть уровень заполнения холодильника.

meal       ingredient  how_much  in_fridge  fill_level_of_meal_in_fridge_in_%
ham&eggs   ham         8         6          50
ham&eggs   egg         24        10         50 
ham&eggs   salt        4         2          50
salad      cutecumber  16        3          25
salad      shrimps     12        4          25
salad      oil         4         1          25
...

Как бы вы это закодировали? Поскольку я новичок в python и pandas, я был бы очень признателен за вашу помощь. С уважением!

1 Ответ

0 голосов
/ 05 мая 2020

Предположим, у вас есть файл .csv для вашего списка, это должно привести к выводу, который вы опубликовали:

import pandas as pd
df=pd.read_csv(r'path\kitchen_list.csv', sep=';')
gdf=df.groupby(by=['meal'], as_index=False)['how_much', 'in_fridge'].sum()
gdf['percentage']=gdf['in_fridge']/gdf['how_much']*100
df=pd.merge(df, gdf[['meal','percentage']], right_on='meal', left_on='meal', how='inner')

Это то, что вы искали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...