【发布时间】:2021-04-08 17:22:35
【问题描述】:
我正在尝试用数据框中的正则表达式替换一些杂乱的数据,该列具有限定值,但它们很杂乱。例如,我在“包装”一栏中有“塑料”,“塑料”,“塑料包装”,或“卡顿”,“纸箱”,“纸箱”...,但它们的含义相同,即“塑料'或'纸箱'之类的东西。因此,我试图用 .replace 和 Regex 替换所有这些值。我的代码如下所示:
dict1={r'[cK]arton':'Carton',r'\W*((?i)plasti(?-i))\W*':'Plastique',r'[cC]onserve':'Conserve'}
df['packaging'].replace(dict1,inplace=True,regex=True)
但是,当我执行时,它给了我错误:缺少:在位置 18
我已经检查过,第 1 行到第 18 行不仅在第 18 行有 17 个缺失值,那么为什么我会出现这个错误?我应该告诉 python 忽略 na 值吗?但是 replace() 函数似乎没有忽略 na 选项。
非常感谢您
【问题讨论】:
-
错误不是由于数据框中的
nan值。你的第二个正则表达式模式有点奇怪。?跟在(之后,就像在(?....)中一样,其含义与您预期的不同,并且只允许紧跟在?之后的某些字符。我建议重新审视您希望使用包含plasti的模式实现的目标。 -
您可以控制数据的插入方式吗?也许您可以首先防止插入不同的值。
标签: python-3.x regex str-replace