Python,正则表达式 - 在pandas数据框中搜索点

时间:2017-03-22 23:35:54

标签: python regex python-3.x pandas

我的pandas.dataFrame包含列'国家',head()如下:

0                                                  tmp   
1                     Environmental Indicators: Energy   
2                                                  tmp   
3    Energy Supply and Renewable Electricity Produc...   
4                                                  NaN   
5                                                  NaN   
6                                                  NaN   
7    Choose a country from the following drop-down ...   
8                                                  NaN   
9                                              Country

当我使用这一行时:

energy['Country'] = energy['Country'].str.replace(r'[...]', 'a')

没有变化。 但是当我使用这一行代替时:

energy['Country'] = energy['Country'].str.replace(r'[...]', np.nan)

所有值均为NaN。

为什么只有第二个代码更改输出?我的目标是仅使用三点的变化值。

2 个答案:

答案 0 :(得分:0)

.replace(r'[...]', 'a')将第一个参数视为正则表达式,但您希望按字面意思对待它。所以,你需要.replace(r'\.\.\.', 'a')

至于你的实际问题,.str.replace需要一个字符串作为第二个参数。它试图将np.nan转换为字符串(这是不可能的)并失败。由于我不知道的原因,而不是提出TypeError,而是为每行返回np.nan

答案 1 :(得分:0)

当你说&#34时,这就是你想要的;我需要改变整个价值观,而不仅仅是三点和#34;

mask = df.Country.str.contains(r'\.\.\.', na=False)
df.Country[mask] = 'a'