如何撤销对原始DataFrame的误修改 从备份恢复原始数据
恢复方法
你提前执行的df_copy = df.copy(deep = True)是完全独立的深拷贝副本,和后续被误改的df没有数据绑定,不会跟着inplace=True的操作变动,直接执行下面的命令就能把df恢复到备份时的状态:
# 恢复df,同时保留df_copy作为独立备份不被后续操作污染 df = df_copy.copy(deep=True)
补充说明
- 你最开始写的
Orig. Dataframe = df属于无效备份:Python对DataFrame这类可变对象的普通赋值只是创建对象引用,相当于给原df起了个别名,你对df做inplace修改时,这个别名指向的内容也会同步改动,完全起不到备份作用。 - 带
inplace=True的操作是直接修改DataFrame所在内存的原始数据,pandas本身没有内置操作回滚栈,操作执行后没法直接撤销,只能从提前保存的独立副本恢复。 - 恢复时不推荐直接写
df = df_copy:这种写法是把df直接绑定到df_copy的引用上,后续你对df做inplace修改时会直接改动备份df_copy的内容,相当于把唯一的备份也污染了,再出问题就没地方恢复了。 - 后续做删列、批量改值这类高风险操作时,尽量少用
inplace=True参数,优先用返回新对象的方式赋值给临时变量,调试出错只要不覆盖原始变量就不会丢失数据。
内容的提问来源于stack exchange,提问作者Hitul Adatiya
相关产品推荐
相关产品推荐

