Cumsum直到值超過一定數目:cumsum大熊貓高達特定的值 - 蟒蛇大熊貓
說,我們有兩個數據幀A,B,看起來像這樣:
A = pd.DataFrame({"type":['a','b','c'], "value":[100, 50, 30]})
B = pd.DataFrame({"type": ['a','a','a','a','b','b','b','c','c','c','c','c'], "value": [10,50,45,10,45,10,5,6,6,8,12,10]})
兩個數據幀將看起來像這樣。
>>> A
type value
0 a 100
1 b 50
2 c 30
>>> B
type value
0 a 10
1 a 50
2 a 45
3 a 10
4 b 45
5 b 10
6 b 5
7 c 6
8 c 6
9 c 8
10 c 12
11 c 10
對於每個組在數據幀中的「類型」,我想加入B中的列的值高達在A中的列的值指定的數量我還要計數的數目B中添加的行。我一直在試圖用一個cumsum(),但我不知道到底要停止總和達到該值時,
輸出應該是:
type value
0 a 3
1 b 2
2 c 4
謝謝
謝謝,這對我的目的非常有效。我唯一的反對意見如下:假設一個新類型d在數據幀B中只有一行的值爲100,並且該值超過了數據幀A中指示的值,例如80。在數據框B中消除這個d。有沒有辦法解決這個問題? – dleal
該解決方案也適用於該情況。 shift函數不會消除該行,而是將零加到它看到'fillna(0)',因此它將包含該行。 – Psidom