如何用熊猫列的正则表达式替换“N.A.”?

时间:2021-01-08 15:27:53

标签: python pandas

我的数据框中有一列名为“Rank”,我需要将所有值“N.A.”替换为 0。 每次我使用 replace 时都会出错。

数据框看起来像:

index Rank
0     100000
1     N.A. 
2     120000
3     N.A. 

这是我试过的代码:

import pandas as pd

df['Rank'] = df['Rank'].replace({'\\N.A. ': '0'}, regex=True)

错误:re.error:在位置 2 处丢失 {

import pandas as pd

df['Rank'].str.replace('N.A. ','0')

这给了我错误:ValueError: Unable to parse string "N.A. " at position 1514

预期输出:

index Rank
0     100000
1     0
2     120000
3     0

我不知道接下来要做什么,感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

如果您只替换列 'N.A. 'Rank 值,您可以直接编写以下内容:

df['Rank'] = df['Rank'].replace('N.A.','0')

答案 1 :(得分:0)

最简单的解决方案是使用普通替换:

df['Rank'] = df['Rank'].replace({'N.A. ': 0})

但如果您有理由使用正则表达式(例如,去除“N.A.”周围的空格),您可以:

df['Rank'] = df['Rank'].replace(regex={r' *N\.A\. *': 0})

答案 2 :(得分:0)

单行 -

import numpy as np
df['Rank'].replace('N.A. ', np.NaN).fillna(0)

答案 3 :(得分:0)

df['Rank'].str.replace('N.A.', '0')

使用您的示例数据框对我有用。

在你的命令中

df['Rank '].str.replace('N.A. ','0')

你有

  • Rankdf['Rank '] 后的空格,
  • N.A.replace('N.A. ','0') 后面的一个空格。

也许这就是问题所在。