I have a data frame as follows:
import pandas as pd
#Data
data = {'Symbol':['MU', 'F', 'F', 'BX', 'BX', 'GE', 'BX', 'MU'],
'Date':['2018-08-20', '2018-08-21', '2018-08-22', '2018-08-24', '2018-08-25', '2018-08-27', '2018-08-27', '2018-08-27'],
'Quantity':[28, 30, 30, 3, 3, 5, 4, -28]}
# Create DataFrame
df = pd.DataFrame(data)
# Print the output.
df
Symbol Date Quantity
0 MU 2018-08-20 28
1 F 2018-08-21 30
2 F 2018-08-22 30
3 BX 2018-08-24 3
4 BX 2018-08-25 3
5 GE 2018-08-27 5
6 BX 2018-08-27 4
7 MU 2018-08-27 -28
I used the following code to create a cumulative cum of the quantity column by symbol on each date:
df1 = df.groupby(by=['Symbol','Date'])['Quantity'].sum().groupby(level='Symbol').cumsum().reset_index(name='Cumsum')
print (df1)
Symbol Date Cumsum
0 BX 2018-08-24 3
1 BX 2018-08-25 6
2 BX 2018-08-27 10
3 F 2018-08-21 30
4 F 2018-08-22 60
5 GE 2018-08-27 5
6 MU 2018-08-20 28
7 MU 2018-08-27 0
Now for each symbol, I want to list all the dates between the start date and the end date (or today if still held) and pull forward the last quantity on each date. The data would then look like this:
Symbol Date Quantity
BX 2018-08-24 3
BX 2018-08-25 6
BX 2018-08-26 6
BX 2018-08-27 10
F 2018-08-21 30
F 2018-08-22 60
F 2018-08-23 60
F 2018-08-24 60
F 2018-08-25 60
F 2018-08-26 60
F 2018-08-27 60
GE 2018-08-27 5
MU 2018-08-20 28
MU 2018-08-21 28
MU 2018-08-22 28
MU 2018-08-23 28
MU 2018-08-24 28
MU 2018-08-25 28
MU 2018-08-26 28
MU 2018-08-27 0
How would I go about doing this?
question from:
https://stackoverflow.com/questions/65895247/iterate-between-dates-based-on-value-and-pull-forward-quantity-from-last-date 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…