2017-01-05 167 views
1

我在熊猫数据框中有一列,我想将所有不是'US'的值替换为'其他'。我尝试了下面的代码。无法根据熊猫列中的条件替换字符串

dat.country.str.replace(to_replace='^(?!.*US)', value='Other', regex=True) 

但是,而不是得到'其他',我得到'其他'的连接结果和旧值。例如,如果旧值为'中国',以上代码给我的结果'OtherChina'

任何人都可以帮忙吗?

+2

正则表达式将''to_replace ='^(?! US $)。* $''并且不要忘记将新值赋给列。 –

+1

@WiktorStribiżew,请将其作为回答发布。它为我工作。非常感谢!! – Enthusiast

回答

1

当使用向前看符号与置换相结合,请记住,向前看符号本身是zero-width assertions - 他们实际上并不比赛(消费)的任何字符 - 因此,具有.+将它们结合起来(.*如果要替换空值) :

^(?!US$).+ //disallow whole string match 
^(?!.*US).+ //disallow partial matches