我有一个Excel电子表格,其中包含来自网站的产品数据,带有以下列标题:
产品编号,产品描述
所述产品描述字段包含HTML详述一个网站产品的完整描述,并且每个描述内的重量被显示为字符串的一部分(例如,“重量是950克”或“重量是1.5公斤”)的数量和在之间没有空格重量单位。
我想做的是:
将XL电子表格导入到Pandas Dataframe中
创建一个名为“ 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]?
-可选的k
,m
或d
g
- 一种 g
\b
-单词边界。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句