我有2个数据框,如下所示。我需要一个结果数据,它具有数据帧1的周期累积和除以在引脚,站点和部门索引的python中数据帧2的周期累积和。
Pin Site Department Period1 Period2 Period3 Period4
1001 L 42 1 0 2 3
1003 L 42 4 4 3 4
1002 R 45 4 5 2 4
Pin Site Department Period1 Period2 Period3 Period4
1002 R 45 5 6 5 5
1003 L 42 4 5 6 8
1001 L 42 1 2 4 5
Pin Site Department Period1 Period2 Period3 Period4
1001 L 42 1/1 (1+0)/(1+2) (1+0+2)/(1+2+4) (1+0+2+3)/(1+2+4+5)
1002 R 45 4/5 (4+5)/(5+6) (4+5+2)/(5+6+5) (4+5+2+4)/(5+6+5+5)
1003 L 42 4/4 (4+4)/(4+5) (4+4+3)/(4+5+6) (4+4+3+4)/(4+5+6+8)
无论数据帧中的引脚顺序如何,我都需要如上所示的结果数据帧。期数会逐月增加。
答案 0 :(得分:1)
我认为set_index
需要div
以cumsum
与reset_index
进行对齐,最后为MultiIndex
的列添加all
:
df11 = df1.set_index(['Pin','Site','Department']).cumsum(axis=1)
df22 = df2.set_index(['Pin','Site','Department']).cumsum(axis=1)
df = df11.div(df22).reset_index()
print (df)
Pin Site Department Period1 Period2 Period3 Period4
0 1001 L 42 1.0 0.333333 0.428571 0.500000
1 1002 R 45 0.8 0.818182 0.687500 0.714286
2 1003 L 42 1.0 0.888889 0.733333 0.652174
编辑:
对于过滤输出值>1
需要反转条件 - 保留结果<=1
- 比较并检查每行是否here True
:
df = df11.div(df22)
df = df[(df <= 1).all(axis=1)].reset_index()