gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:52:30 32 4
gpt4 key购买 nike

我有一个 Excel 电子表格,其中包含来自网站的产品数据,以及以下列标题:

产品ID产品描述

ProductDescription 字段包含详细说明网站产品完整描述的 HTML,并且在每个描述中,重量显示为字符串的一部分(例如“重量为 950 克”或“重量为 1.5 千克”) ') 数字和重量单位之间没有空格。

我想做的是:

  • 将 XL 电子表格导入 Pandas 数据框

  • 创建一个名为“Weight”的新列

  • 解析每个“ProductDescription”(大约 5000 行产品)并且,使用正则表达式,找到提到重量的文本(它可以被识别为“XXXXg”或“XXXXkg”)并将其放入“重量”中数据帧的列作为数值(浮点)。

  • 最后将这个新的三列数据框导出为 Excel 文件。

我在下面编写了一个小脚本,但它不断地抛出错误。如果有人能提供帮助,我将不胜感激。

import pandas as pd
import re as re


def weight(inputString):

result = [re.search('([0-9.]+[kgG]{1,2})', s) for s in inputString]

return result

excel_file = 'Products.xlsx'
df = pd.read_excel(excel_file)

df['Weight'] = df['ProductDescription'].apply(weight)

希望能帮到你。请原谅我不优雅地粘在一起的代码!我对此还很陌生。

最佳答案

您可以使用

df["Weight"] = (
df["ProductDescription"]
.str.extract(r"(?i)(\d+(?:\.\d+)?)\s*[kmd]?g\b", expand=False)
.astype(float)
)

(?i)(\d+(?:\.\d+)?)\s*[kmd]?g\b 模式匹配:

  • (?i) - 使模式不区分大小写
  • (\d+(?:\.\d+)?) - 第 1 组:1+ 位数字,可选出现 . 和 1+ 位数字
  • \s* - 0+ 个空格
  • [kmd]? - 可选的 kmd
  • g - 一个g
  • \b - 字边界。

关于Python - 使用正则表达式从 Pandas DataFrame 中的列(包含字符串)中提取权重并将其添加到新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888585/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com