replace()和正则表达式无法更新空白单元格

时间:2016-11-01 16:54:49

标签: python regex pandas

感谢您抽出宝贵时间阅读本文。

有谁可以看到为什么下面这个简单示例中的replace()无法真正替换空白单元格?

import pandas as pd
import numpy as np

data = pd.DataFrame({'serial_number': ['01a2b345','10ab2030'],'title':['company_a','']}) 

# fill empty cell
data['title'].replace('', np.nan, regex=True) # doesn't work

data

我还尝试使用相同的结果调用data['title'].replace(r'\s+', np.nan, regex=True)

我确信(就像我最近的所有正则表达式问题一样)我忽略了一些简单的事情。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

默认情况下,.replace会返回 NDFrame 对象,在您的情况下,该对象应重新分配到原始列:

In [20]: data.title = data['title'].replace('', np.nan, regex=True)

In [21]: data
Out[21]:
  serial_number      title
0      01a2b345  company_a
1      10ab2030        NaN

或者,您可以将inplace参数作为True传递。

答案 1 :(得分:2)

替换的原始语法是:

our_str = 'Hello'
new_str = string.replace(our_str, 'you', 'me', 1)
print(new_str)

所以在你的情况下代码应该是:

data['title'] = data['title'].replace('', np.nan, regex=True)

原因在于根本在评论中提到的替换是不可能的。