感谢您抽出宝贵时间阅读本文。
有谁可以看到为什么下面这个简单示例中的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)
。
我确信(就像我最近的所有正则表达式问题一样)我忽略了一些简单的事情。任何帮助将不胜感激。
答案 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)
原因在于根本在评论中提到的替换是不可能的。