大熊猫累积/元素

时间:2015-04-21 06:50:19

标签: python numpy pandas

我试图弄清楚是否有一种简单的方法来解决熊猫的以下问题。我们说我有四个容器,A,B,C,D,每个容器都有一个特定的容量。让我们说我现在得到一些液体,我想填充这些容器。我怎么能想出一个"系列"它显示了每个容器填充的数量。基本上,我希望液体填充容器A,然后容器B等,直到没有液体剩余。并非所有容器都必须填满,并且液体永远不会比容器更多。这是问题所在:

Container  Volume (L)  FILLED                            
 A           6           0
 B           7           0
 C           8           0
 D           9           0


Case A:

Liquid = 10L

Result:                  
Container  Volume (L) FILLED                             
 A           6           6
 B           7           4 
 C           8           0
 D           9           0

Case B:
Liquid = 20L
Result:
Container  Volume (L) FILLED                             
 A           6           6
 B           7           7 
 C           8           7
 D           9           0

我和pandas.cumsum() and pandas.clip_upper()一起玩过,但是我需要几步才能到达我需要的地方,并希望有一个灵活的方法来做到这一点。就像我可以为案例B做的那样:

filled_a = df [" Volume"]。cumsum()。clip_upper(20)并继续修改,直到达到我的预期结果

1 个答案:

答案 0 :(得分:1)

a = df["Volume"].cumsum().clip_upper(20)
b = a.shift().fillna(0)
filled_a = a - b