使用pandas/gspread时修改df2致原df改动的问题排查
问题原因及解决方法
核心原因
在Pandas中,df2 = df这种直接赋值操作并没有创建新的DataFrame副本,只是让变量df2和df指向了同一个内存中的DataFrame对象。所以对df2执行的所有修改操作,本质上都是在操作共享的那个原始DataFrame,自然会同步影响到df。
解决办法
要创建完全独立的DataFrame副本,使用Pandas的copy()方法:
df2 = df.copy()
执行这行代码后,df2会成为一个全新的、与原df完全独立的DataFrame,后续对df2的任何修改都不会影响原df的数据。
如果你的DataFrame包含嵌套的复杂数据结构(比如列表、字典),可以显式指定深度复制(这也是copy()的默认行为):
df2 = df.copy(deep=True)
不过针对你当前的字符串转数值场景,默认的浅复制已经足够满足需求。
内容的提问来源于stack exchange,提问作者Dico Gomes
相关产品推荐
相关产品推荐

