我有一个dataframe,我想只替换“Blah”,当它本身作为dataframe中的单个项目/单元格/条目出现时-而不是作为更长字符串的一部分,如“Blah guh”。请参见下面的示例:
data={"Col":["Blah","Blah gah","Blah bluh"],'Subs':["one","two","three"]}
df=pd.DataFrame(data)
所需输出:
| Col|潜艇|
| --|--|
| Blah ALL|一|
| 布拉加|两|
| Blah bluh|三|
我试着使用单词边界,但它只是取代了所有三个条目中的Blah...
df["Col"] = df["Col"].str.replace(r'\bBlah\b', "Blah ALL", regex=True)
| Col|潜艇|
| --|--|
| Blah ALL|一|
| Blah ALL GAH|两|
| Blah ALL bluh|三|
我肯定漏掉了什么明显的东西。
3条答案
按热度按时间oprakyz71#
不要使用单词边界(
\b
),而是选择字符串开始/结束锚点(^
/$
):6vl6ewon2#
这是不是就像确保单元格以“Blah”开头和结尾一样简单?因为如果是这样的话:
bt1cpqcv3#
当需要替换完整字符串时,不要使用
str.replace
,而是使用replace
(默认为regex=False
):输出量:
计时
这也快得多。
在30k行上: