在随后的分析之前,我使用pandas库清理数据。通常我会做很多小的函数来完成特定的任务:
def clean_str_columns(df, column):
# do something to the dataframe
df[column] = df[column].str.strip()
# do more things
return df
然后叫他们:
df = clean_str_columns(df, 'column_name')
如果我是正确的,那么当我将df
传递给函数时,它会对df
对象进行局部引用,这意味着这应该会给出等价的结果:
def clean_str_columns(df, column):
# do something to the dataframe
df[column] = df[column].str.strip()
# do more things
然后:
clean_str_columns(df, 'column_name')
df对象将被编辑,这样我的全局引用将指向已编辑的对象
在适当的地方编辑这样的dfs时,什么是“最佳样式”
我主要关心这一点,因为当我处理大量函数并清理一个大的df
时,我经常得到一个MemoryError
。我用%ipythonmagic跟踪我的变量,没有散乱的变量,并定期运行Python垃圾收集器。我的df
越来越小(删除行和列),但我仍然得到这个错误。所以我担心这个问题与我多次将全局引用重新分配给df
有关
您可以尝试使用
pd.DataFrame.pipe
如果您的dataframe
被一组函数更改,它以要应用的函数作为参数,您还可以使用dir()
在会话上看到局部变量,如果您的数据帧没有被垃圾收集器删除,您会在那里找到它相关问题 更多 >
编程相关推荐