Pandas中使用apply修改新DataFrame列时,原DataFrame也被修改的问题
修改新DataFrame导致原DataFrame同步变化的原因与解决方法
问题根源
在Python中,modeldf = df这种赋值操作不会创建新的DataFrame对象,只是让变量modeldf和df指向内存中同一个DataFrame实例。因此,对modeldf的任何修改,都会直接作用于这个共享的实例,原df自然也会跟着变化。
解决方法
要创建独立于原DataFrame的副本,需要使用copy()方法:
- 默认使用深拷贝(
deep=True),会复制DataFrame的数据和索引,新对象与原对象完全独立 - 浅拷贝(
deep=False)仅复制索引和引用,数据仍共享,一般不推荐
修改后的代码示例
import pandas as pd df = pd.DataFrame([['x1','x2'],['y1','y2']],columns=['A','B']) lst = [] def getbinary(x): if x not in lst: lst.append(x) return lst.index(x) # 创建独立副本,避免修改影响原DataFrame modeldf = df.copy() modeldf['A'] = df['A'].apply(getbinary)
执行上述代码后,modeldf的列会被修改,而原df将保持初始状态不变。
内容的提问来源于stack exchange,提问作者solac34
相关产品推荐
相关产品推荐

