我正在研究Jupyter Notebook。我有多个数据框,在其中比较它们之间的数据。在比较这些数据帧之间的数据之前,我需要清理一些字符串。我需要删除双引号(“),并且需要删除空单元格中的NaN值。
为了对一个名为df1970的数据帧执行此操作,我创建了两个函数:
df1970['Title'] = pd.Series(df1970['Title']).str.replace('"', '')
df1970= df1970.replace(np.nan, "", regex=True)
当我在下游引用df1970时,它为我提供了已清理的数据帧。但是,我有一个标题为df1966的数据集,我想删除双引号并替换NaN 而无需再次输入上面的代码。所以我创建了一个函数:
def cleanupdataset(df):
df['Title'] = pd.Series(df['Title']).str.replace('"','')
df= df.replace(np.nan, "", regex=True)
return df
然后,当我打电话时:
cleanupdataset(df1966)
...它为我提供了一个很好的1966年的干净数据集,我想在下游使用。
我以后的函数将USETHISDF称为要在其上进行操作的数据帧的标题。因此,这次我想使用我漂亮的全新df1966,所以我重新定义了它:
cleanupdataset(df1966)
USETHISDF = df1966
但是当我调用它以检查它是否被清除时...
USETHISDF
它使用的给了我df1966的未清洗版本。我在做什么错了?
答案 0 :(得分:0)
您的函数不会就地更改初始数据框,而是返回一个新的数据框。为了查看更改,您必须使用函数的返回值:
uniqueidentifier