将 Pandas 中的多个值替换为缺失值(无)

Pin*_*ng 4 python pandas

我有一个数据集d,其中包含不同形式的缺失值:

 d = {'col1': [1, 2, '', 'N/A', 'unknown', None], 
      'col2': [3, 4, 'N/A', None, 'N/A_N/A', '']}
d = pd.DataFrame(data=d)

          col1     col2
0        1        3
1        2        4
2               N/A
3      N/A     None
4  unknown  N/A_N/A
5     None 
Run Code Online (Sandbox Code Playgroud)

我想看看每列中实际上缺少多少个值。因此,我想将所有空白、n/a 和未知数转换为None。我尝试了这段代码并得到以下结果:

d.replace(to_replace =['N/A', '', 'unknown', 'N/A_N/A'],  
                            value = None)

   col1  col2
0     1     3
1     2     4
2     2     4
3     2  None
4     2  None
5  None  None 
Run Code Online (Sandbox Code Playgroud)

我不明白为什么d.replace会这样,有人有更好的解决方案来解决我的问题吗?我希望它是这样的:

     col1     col2
0        1        3
1        2        4
2      None     None
3      None     None
4      None     None
5      None     None
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 5

这是已知行为,每当目标替换值为 时就会发生None。可以说,地位是设计的,是如何处理论点的结果。

我可以建议吗to_numeric

pd.to_numeric(df.stack(), errors='coerce').unstack()

   col1  col2
0   1.0   3.0
1   2.0   4.0
2   NaN   NaN
3   NaN   NaN
4   NaN   NaN
5   NaN   NaN
Run Code Online (Sandbox Code Playgroud)

或者,如果您将字典传递给replace,您的代码就可以工作。

# df.replace({'': None, 'N/A': None, 'N/A_N/A': None, 'unknown': None})
df.replace(dict.fromkeys(['N/A', '', 'unknown', 'N/A_N/A'], None))

   col1  col2
0   1.0   3.0
1   2.0   4.0
2   NaN   NaN
3   NaN   NaN
4   NaN   NaN
5   NaN   NaN
Run Code Online (Sandbox Code Playgroud)

  • 你打败了我,我只是想回答这个听写方法:-) +1 (2认同)