![](/img/trans.png)
[英]In pandas dataframe, how to do regex replace for values of a string column
[英]How to replace column values in a pandas dataframe with regex?
我想用'ASUS'或'ACER'(大写)替换下面列中的值,即只要值中有单词(忽略大小写)'acer',只需将其替换为'ACER' , 和单词 'asus *' 替换为 'ASUS'。 我使用下面来自 Pandas 文档的示例屏幕截图作为示例。 我应用了正则表达式 function,但它似乎不起作用 - output 没有任何反应。 我的代码:
dfx = pd.DataFrame({'Brands':['asus', 'ASUS ZEN', 'Acer','ACER Swift']})
dfx = dfx.replace([{'Brands': r'^asus.$'}, {'Brands': 'ASUS'}, {'Brands': r'^acer.$'}, {'Brands': 'ACER'}], regex=True)
dfx['Brands'].unique()
Jupyter笔记本中的Output:
数组(['华硕','华硕 ZEN','宏碁','ACER Swift'],dtype=object)
使用的 Pandas 文档示例:
非常感谢任何有一点解释的帮助。
接受的解决方案:
dfx = pd.DataFrame({'Brands':['asus', 'ASUS ZEN', 'Acer','ACER Swift']})
dfx['Brands'] = dfx['Brands'].str.lower().str.replace('.*asus.*', 'ASUS', regex=True).str.replace('.*acer.*', 'ACER', regex=True)
OR
dfx['Brands'] = dfx.Brands.apply(lambda x: re.sub(r".*(asus|acer).*", lambda m: m.group(1).upper(), x, flags=re.IGNORECASE))
dfx['Brands'].unique()
Output:
数组(['华硕','ACER'],dtype =对象)
dfx.Brands.apply(lambda x: re.sub(r".*(asus|acer).*", lambda m: m.group(1).upper(), x, flags=re.IGNORECASE))
请试试
dfx['Brands'] = dfx['Brands'].str.lower().str.replace('.*asus.*', 'ASUS', regex=True).str.replace('.*acer.*', 'ACER', regex=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.