如何在熊猫数据框中创建新的总计(sumif)列?

时间:2020-05-05 14:13:23

标签: python pandas dataframe pandas-groupby

我想为厨房创建一个简单的统计信息,为此,我有一个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
...

我也想将百分比添加到我的原始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 :(得分:0)

假设您的列表中有一个.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')

这是您要找的吗?