变量用于不同任务时的Python内存使用情况

变量用于不同任务时的Python内存使用情况,python,memory-management,Python,Memory Management,我与pandas在ETL管道中工作,我的计算机内存使用量超过了预期 我正在阅读Python中的内存使用情况,当我创建pandas Dataframe并为此Dataframe指定一个名称时,我不理解内存使用情况是如何工作的,我使用相同的名称进行一些转换或向其添加更多列 例如: df=pd.DataFrame( { “column1”:[1,2] ,'column1':['a','b']}) 如果现在我想将另一列添加到此数据帧: df['column3']=1 第一个df数据帧使用的内存将替换为

我与pandas在ETL管道中工作,我的计算机内存使用量超过了预期

我正在阅读Python中的内存使用情况,当我创建pandas Dataframe并为此Dataframe指定一个名称时,我不理解内存使用情况是如何工作的,我使用相同的名称进行一些转换或向其添加更多列

例如:

df=pd.DataFrame(
{
“column1”:[1,2]
,'column1':['a','b']})
如果现在我想将另一列添加到此数据帧:

df['column3']=1
第一个df数据帧使用的内存将替换为新的df数据帧,还是现在python将内存用于两个数据帧

如果要删除其中一列,会发生什么情况

df=df.drop(columns={'column1'})
阅读上面写着:

所有数据结构都是值可变的(它们包含的值可以更改),但不总是大小可变的。序列的长度不能更改,但可以将列插入到数据帧中

而且:

大小可变:可以从DataFrame和更高维度的对象中插入和删除列

此外,如果使用
dir()
命令检查所有范围内变量,则可以看到数据帧只有一个定义

总之,在我看来,Python并没有创建数据帧的副本,在添加/删除列时,它只保存一个副本。此外,如果您希望创建一个数据帧副本,该副本实际复制另一个变量中的所有值,则应使用
.copy()
函数