从DataFrame中的行中减去双重计数值

时间:2017-04-10 21:42:42

标签: python pandas

我正在使用Pandas并拥有一个如下所示的DataFrame:

Module  Position    Layout  Count
x       a           Desktop 50
x       a           Mobile  20
y       a           Desktop 100
y       a           Mobile  30
z       b           Desktop 80
z       b           Mobile  20

当模块和位置值匹配时,如何从桌面计数中减去移动计数,以获得生成的DataFrame:

Module  Position    Layout  Count
x       a           Desktop 30
x       a           Mobile  20
y       a           Desktop 70
y       a           Mobile  30
z       b           Desktop 60
z       b           Mobile  20

1 个答案:

答案 0 :(得分:3)

d1 = df.set_index(['Module', 'Position', 'Layout'])
d2 = d1.unstack().diff(-1, axis=1).stack().combine_first(d1).reset_index()
print(d2)

  Module Position   Layout  Count
0      x        a  Desktop   30.0
1      x        a   Mobile   20.0
2      y        a  Desktop   70.0
3      y        a   Mobile   30.0
4      z        b  Desktop   60.0
5      z        b   Mobile   20.0