在进行后续分析之前,我使用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对象将被编辑,因此我的全局引用将指向已编辑的对象。
在现场编辑此类df时,“最佳样式”是什么?
我主要关心这个问题,因为当我使用许多功能并清理大型df
时,我经常会得到一个MemoryError
。我使用%who IPython魔术来跟踪变量,没有杂散变量,并定期运行Python垃圾收集器。我的df
越来越小(删除行和列),但仍然出现此错误。因此,我担心这个问题与我多次将全局引用重新分配给df
有关?
答案 0 :(得分:1)
如果pd.DataFrame.pipe
被一组函数更改,则可以尝试使用dataframe
,它以要应用的函数为参数,还可以使用{{1 }},如果您的数据框没有被垃圾收集器删除,您会在那里找到它