我试图弄清楚是否有一种简单的方法来解决熊猫的以下问题。我们说我有四个容器,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)并继续修改,直到达到我的预期结果
答案 0 :(得分:1)
a = df["Volume"].cumsum().clip_upper(20)
b = a.shift().fillna(0)
filled_a = a - b