Pandas-仅在根据特定条件检索的行上使用正则表达式提取带有数字/字符串的更新列

维迪亚

我正在尝试从文件中清除数据。我已经做了部分清理,数据看起来像这样。

在此处输入图片说明

Price列仍需要清理并更新为其他列。这就是我想做的

Str '80 per piece' =>

80 -> 'Price' column
'piece' -> 'Unit' column

Str '110 per pack' =>
110 -> 'Price' column
'pack' -> 'Unit' column

我创建了一个掩码来检索所需的行,然后使用正则表达式提取非数字。我发现它影响所有行。当我尝试仅使用通过掩码检索的行时,出现错误。

如何确保仅条件检索行中的列受到影响?

这是我的代码-错误的输出,没有在两侧都使用遮罩。

在此处输入图片说明

但是,如果我使用口罩尝试此操作-我会收到此错误

在此处输入图片说明

奕奕

您可以extract使用IIUC与命名组,然后update

df = pd.DataFrame({"Unit":["gm", np.NaN, np.NaN],
                   "Price":["40","80 per piece", "110 per pack"]})

  Unit         Price
0   gm            40
1  NaN  80 per piece
2  NaN  110 per pack

s = df.loc[df["Unit"].isnull(),"Price"].str.extract("(?P<Price>\d+)\sper\s(?P<Unit>[A-Za-z]+)").dropna()

df.update(s)

print (df)

    Unit Price
0     gm    40
1  piece    80
2   pack   110

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用正则表达式从pandas列中提取子字符串

如果找到模式,则使用正则表达式在pandas列中插入字符串

Python-使用正则表达式从Pandas DataFrame中的列(包含字符串)中提取权重并将其添加到新列中

使用正则表达式在Pandas数据帧中字符串开头的花括号中剥离数字

子字符串或正则表达式上的 Pandas groubpy

python / pandas:使用正则表达式删除字符串中方括号中的所有内容

试图在python / pandas中使用正则表达式获取子字符串

Python Pandas:使用正则表达式用超链接替换字符串

使用正则表达式从0到999之间的数字中提取带有数字的字符串

如何使用正则表达式从以任何大写字母开头的Pandas Series中提取字符串

Pandas 添加一个带有字符串的新列,其中单元格匹配特定条件

如何在B列的正则表达式模式下使用匹配A列中字符串的结果在Pandas中建立新列?

仅打印与正则表达式Pandas匹配的字符串部分

在 Pandas 数据帧(正则表达式?)中匹配销售优惠的字符串

根据使用正则表达式获得的匹配结果,替换另一列上的值(Python Pandas)

如何使用正则表达式从输入字符串中提取所有非字母数字字符?

使用正则表达式从pandas数据框中的列中提取数据

使用正则表达式从pandas df中的列中提取单词

正则表达式验证带有可选空格的字母数字字符串

使用正则表达式修改pandas列

如何在pandas df列的条件子集的endswith()中使用正则表达式?

python/pandas:使用正则表达式删除列中以特定内容开头的数据

正则表达式验证带有数字和字母的字符串

如何使用正则表达式删除带有数字和特殊字符的字符串

在一列上使用正则表达式验证 Pandas 数据

pandas str.replace-如果正则表达式未能避免NaN将字符串转换为数字,则保留当前值

正则表达式:查找特定字符串后的所有数字

使用正则表达式忽略带有数字的字符串中的日期

正则表达式仅在 shell 中捕获字母数字字符串