首页 > 解决方案 > 调用函数后如何在python中使用inplace?

问题描述

情况1

我有 7 列,其中包含"???". 我已经"???"用 NAN替换了np.nan. 当我尝试再次读取数据框时, "???"显示相同。如何就地使用并在主数据框中进行更改?

案例:2

我正在使用函数来清理所有 7 列并得到以下错误消息

案例编码:1

df是我的数据框

df.iloc[:, 0:8].replace('???', np.nan)

运行上述代码后,我得到了 NAN。

然后我尝试再次阅读 df 然后"???"列中出现相同的内容。

无法粘贴屏幕截图。

案例:2

def cleaning(x):
    x = x.replace("???", np.nan)
    return(x)

df = df.iloc[:, 0:8]
df.applymap(cleaning)

所有列的 dtype 都是对象

错误

TypeError: ('replace() argument 2 must be str, not float', 'occurred at index Transport')

标签: pythonpandas

解决方案


在这两种情况下,您都需要将其分配回 df[:, 0:8]:

案例1

df.iloc[:, 0:8] =df.iloc[:, 0:8].astype(str).replace('???', np.nan)

案例2

def cleaning(x):
    x =x.replace('???', np.nan)
    return(x)

df.iloc[:, 0:8] =df.iloc[:, 0:8].astype(str).apply(cleaning)

推荐阅读