'Store a dataframe and block new updates

I'm struggling to solve this problem. I'm creating a data frame that is generated by data that can vary from one day to another but I need to save the first version and block new updates.

This is the code:

# Create data frame for the ideal burndown line

df_ideal_burndown = pd.DataFrame(columns=['dates', 'ideal_trend'])
df_ideal_burndown['dates'] = range_sprint

#### Dates preparation
df_ideal_burndown['dates'] = pd.to_datetime(df_ideal_burndown['dates'], dayfirst=True)
df_ideal_burndown['dates'] = df_ideal_burndown['dates'].dt.strftime('%Y-%m-%d')


# Define the sprint lenght
days_sprint = int(len(range_sprint)) - int(cont_nonworking)

# Get how many items are in the current sprint
commited = len(df_current_sprint)

# Define the ideal number of items should be delivered by day
ideal_burn = round(commited/days_sprint,1)

# Create a list of remaining items to be delivered by day
burndown = [commited - ideal_burn]


# Day of the sprint -> starts with 2, since the first day is already in the list above
sprint_day = 2

# Iterate to create the ideal trend line in numbers
for i in range(1, len(df_ideal_burndown), 1):

    burndown.append(round((commited - (ideal_burn * sprint_day)),1))
    
    sprint_day += 1
    
    
# Add the ideal burndown to the column
df_ideal_burndown['ideal_trend'] = burndown

df_ideal_burndown

This is the output:

    dates   ideal_trend
0   2022-03-14  18.7
1   2022-03-15  17.4
2   2022-03-16  16.1
3   2022-03-17  14.8
4   2022-03-18  13.5
5   2022-03-21  12.2
6   2022-03-22  10.9
7   2022-03-23  9.6
8   2022-03-24  8.3
9   2022-03-25  7.0
10  2022-03-28  5.7
11  2022-03-29  4.4
12  2022-03-30  3.1
13  2022-03-31  1.8
14  2022-04-01  0.5

My main problem is related to commited = len(df_current_sprint), since the df_current_sprint is (and needs to be) used by other parts of my code.

Basically, even if the API returns new data that should be stored in the df_current_sprint I should use the version I'd just created.

I am pretty new to Python and I do not know if there is a way to store and, let's say, cache this information until I need to use fresh new data.

I appreciate your support, clues, and guidance.

Marcelo



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source