Why not cntrl+z for reversing data changes in dataframe?

I agree with @mara here: I've always been saving any manipulated object as a new object exactly because I didn't know how else to "undo" the change; and once you adhere to it - there shouldn't be any problem...

I wonder if some of the changes you make "experimenting" even have to go into your script. I mean, feel free to play with the data in the console without assigning it to an object, look at the outputs, and when ready and sure - add to the script.
I think this could work on some 1 or 2 step modifications. Wouldn't work if you go down the rabbit hole right away though...

I totally agree that sometimes it is very time-consuming to re-run the script. However, personally, I find this process to be the best way to ensure that my script is correct and it is going to run again tomorrow. Restarting the session is one of the most frequent things I do.

Reminds me of this thread: