【发布时间】:2020-05-10 07:36:31
【问题描述】:
我有一个 Excel 电子表格,其中包含来自网站的产品数据,并带有以下列标题:
产品ID,产品描述
ProductDescription 字段包含详细描述网站产品的完整描述的 HTML,并且在每个描述中,重量显示为字符串的一部分(例如“重量为 950 克”或“重量为 1.5 公斤” ') 数字和重量单位之间没有空格。
我想做的是:
将 XL 电子表格导入 Pandas 数据框
创建一个名为“重量”的新列
解析每个“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)
希望你能帮上忙。请原谅我粗鲁地粘在一起的代码!我对此还是很陌生。
【问题讨论】:
-
import re as re?只需使用import re -
使用
df['Weight'] = df['ProductDescription'].str.extract(r'(?i)(\d+(?:\.\d+)?)\s*[kmd]?g\b', expand=False).astype(float) -
啊,太好了。我希望我已经正确地“接受”了它。再次感谢你。模式解释也很有帮助!我绝对需要阅读正则表达式。也谢谢你的欢迎!你们都很善良。
-
请分享一些输入/输出示例。
-
它不断地抛出错误也总是分享整个错误信息。
标签: python regex excel pandas dataframe