我有一个包含以下列的表格:
date Product category units xx_col ..
0 2017-02-11 Books heavy 2. 11.
1 2017-02-11 Books medium 1. 22.
2 2017-02-11 Books light 1. 11.
3 2017-02-11 DVD heavy 3. 11.
4 2017-02-11 DVD medium 2. 4170.775
5 2017-02-11 DVD light 2. 4170.775
现在,我想再创建两个列,每个日期的给定产品(所有三个类别)的单位总和,然后是分数。如下所示。还有其他一些列xx_col,我想保留在表中(我在第二张表中没有提及,但应该在该表中)。
date Product category units unit_tot unit_frac ..
0 2017-02-11 Books heavy 2. 4. .5
1 2017-02-11 Books medium 1. 4 .25
2 2017-02-11 Books light 1. 4 .25
3 2017-02-11 DVD heavy 3. 10 .3
4 2017-02-11 DVD medium 2. 10 .2
5 2017-02-11 DVD light 5. 10 .5
unit_tot:total_units-给定产品在三个(h,m,l)类别(2 + 1 + 1 = 4)内给定日期的总和。
unit_frac:unit / unit_tot
我不仅希望这些都为unit_tot或unit_frac,而且我想保持此表不变。我可以得到两个不同的pivot_tables,但是我想看看是否有添加这两个列的简便方法。
答案 0 :(得分:1)
IIUC,只需要transform
df['unit_tot'] = df.groupby(['date', 'Product']).units.transform('sum')
然后将两列均分以获得分数
df['unit_frac'] = df['units']/df['unit_tot']