我想为厨房创建一个简单的统计信息,为此,我有一个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的新手,因此非常感谢您的帮助。 最好的问候!
答案 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')
这是您要找的吗?