如何用 Pandas,Python 中的几个指定单词替换系列中的所有单词?

Ale*_*xis 4 python string replace pandas

我想基本上使用python查找和替换。

但是,我想说如果一个单元格包含某些内容,则替换为我想要的内容。

我知道

str.replace('safsd','something else')
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何指定如何摆脱该单元格中的所有内容。我用*吗?我对 python 不太熟悉,但我知道在 bash shell*中对所有内容的引用......

我有

df['Description'] 
Run Code Online (Sandbox Code Playgroud)

可以包含'optiplex 9010 for classes and research'我只想替换为'optiplex 9010'. 或者'macbook air 11 with configurations...etc.'我只想'macbook air 11'

我的目标是...

if  Df['Description'].str.contains('macbook air 11')
  then Df['Description'].str.replace(' (not sure what I put in here) , 'mabook air 11')
Run Code Online (Sandbox Code Playgroud)

任何帮助/想法?

谢谢!

**可能有用的其他信息...

我正在处理数千种不同的用户输入。因此,某人购买的“描述”在上下文、措辞、结构等方面完全不同。我可以手动进入 excel 并按包含“optiplex 9010”的内容进行过滤,然后替换所有内容用简单的描述,对 macbook 等做同样的事情。

我认为使用 pandas/python .str.contains 和 .str.replace 可能有一些更简单的方法。

希望额外的信息有帮助!让我知道

And*_*den 5

str.replace 采用正则表达式,例如 'macbook air 11'后跟零个(或多个)( *) 的任何字符 ( .) (您也可以标记为不区分大小写):

Df['Description'].str.replace('macbook air 11.*' , 'macbook air 11')
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关正则表达式的一些入门知识。

但是,您可能会更好,特别是如果您已经有了完整的主题列表,来规范化名称(例如,在这个问题/答案中使用模糊模糊):

from fuzzywuzzy.fuzz import partial_ratio
Df['Description'].apply(lambda x: max(topics, key=lambda t: partial_ratio(x, t)))
Run Code Online (Sandbox Code Playgroud)