首页 > 解决方案 > 如何用正则表达式替换熊猫列的“NA”?

问题描述

我的数据框中有一列名为“Rank”,我需要将所有值“NA”替换为 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 "NA" at position 1514

预期输出:

index Rank
0     100000
1     0
2     120000
3     0

我不知道下一步该怎么做,任何帮助表示赞赏!

标签: pythonpandas

解决方案


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

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

但是,如果您有某些理由使用正则表达式(例如,去掉 'NA' 周围的空格),您可以在这里:

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

推荐阅读