我的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。
为什么只有第二个代码更改输出?我的目标是仅使用三点的变化值。
答案 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'