在 Pandas 数据框中用 NaN 替换字符串值 - Python

ste*_*dv 6 missing-data dataframe pandas

我必须更换价值吗?使用 NaN 以便您可以调用 .isnull () 方法。我找到了几种解决方案,但总是返回一些错误。认为:

data = pd.DataFrame([[1,?,5],[?,?,4],[?,32.1,1]])
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

pd.data.replace('?', np.nan)
Run Code Online (Sandbox Code Playgroud)

我有:

     0     1  2
0  1.0   NaN  5
1  NaN   NaN  4
2  NaN  32.1  1    
Run Code Online (Sandbox Code Playgroud)

但 data.isnull() 返回:

       0      1      2
0  False  False  False
1  False  False  False
2  False  False  False
Run Code Online (Sandbox Code Playgroud)

为什么?

小智 7

# a dataframe with string values
dat = pd.DataFrame({'a':[1,'FG', 2, 4], 'b':[2, 5, 'NA', 7]})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

从数据框中删除非数字元素:

"Method 1 - with regex"
dat2 = dat.replace(r'^([A-Za-z]|[0-9]|_)+$', np.NaN, regex=True)
dat2
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

"Method 2 - with pd.to_numeric"
dat3 = pd.DataFrame()
for col in dat.columns:
    dat3[col] = pd.to_numeric(dat[col], errors='coerce')
dat3
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


jez*_*ael 5

我想你忘了分配回来:

data = pd.DataFrame([[1,'?',5],['?','?',4],['?',32.1,1]])

data = data.replace('?', np.nan)
#alternative
#data.replace('?', np.nan, inplace=True)
print (data)
     0     1  2
0  1.0   NaN  5
1  NaN   NaN  4
2  NaN  32.1  1

print (data.isnull())
       0      1      2
0  False   True  False
1   True   True  False
2   True  False  False
Run Code Online (Sandbox Code Playgroud)