我有下表:
| ID | 數量_1 | 數量_2 |
|---|---|---|
| 一種 | 1 | 10 |
| 一種 | 2 | 0 |
| 一種 | 3 | 0 |
| 乙 | 3 | 29 |
| 乙 | 2 | 0 |
| 乙 | 1 | 0 |
我想根據 ID 進行迭代,然后減去 Qty_2 - Qty_1 并使用該結果更新下一行。
結果將是:
| ID | 數量_1 | 數量_2 |
|---|---|---|
| 一種 | 1 | 10 |
| 一種 | 2 | 8 |
| 一種 | 3 | 5 |
| 乙 | 3 | 29 |
| 乙 | 2 | 27 |
| 乙 | 1 | 26 |
理想情況下,我還想通過減去第一行結束一個新的 ID 開始,然后才開始回圈:
| ID | 數量_1 | 數量_2 |
|---|---|---|
| 一種 | 1 | 9 |
| 一種 | 2 | 7 |
| 一種 | 3 | 4 |
| 乙 | 3 | 26 |
| 乙 | 2 | 24 |
| 乙 | 1 | 23 |
每個解決方案都可以!謝謝!
uj5u.com熱心網友回復:
首先逐行計算 'Qty_1' 和 'Qty_2' 之間的差異,然后按 'ID' 分組并計算累積總和:
df['Qty_2'] = df.assign(Qty_2=df['Qty_2'].sub(df['Qty_1'])) \
.groupby('ID')['Qty_2'].cumsum()
print(df)
# Output:
ID Qty_1 Qty_2
0 A 1 9
1 A 2 7
2 A 3 4
3 B 3 26
4 B 2 24
5 B 1 23
設定:
data = {'ID': ['A', 'A', 'A', 'B', 'B', 'B'],
'Qty_1': [1, 2, 3, 3, 2, 1],
'Qty_2': [10, 0, 0, 29, 0, 0]}
df = pd.DataFrame(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377718.html
上一篇:詢問正確的do回圈fortran
