【发布时间】:2021-05-29 06:46:54
【问题描述】:
我正在使用 python3。
我正在尝试从产品描述中提取数字数据。然而,有时同一产品有不同的描述,这会导致结果相互矛盾。
我的代码是:
import pandas as pd
import re
data = {'desc':['1 oz Silver Eagles Monster Box (500 pc)', 'Silver Eagle Monster Box (500 pcs 1 oz coins)', '2021 10 oz Silver Royal Canadian Mint Bar'], 'inventory':['in stock', 'in stock', 'out of stock']}
df=pd.DataFrame(data)
df['ounces']=df['desc'].str.extract(r'(\d+ pc|\d+ oz)')
print(df)
我得到的是:
desc inventory ounces
0 1 oz Silver Eagles Monster Box (500 pc) in stock 1 oz
1 Silver Eagle Monster Box (500 pcs 1 oz coins) in stock 500 pc
2 2021 10 oz Silver Royal Canadian Mint Bar out of stock 10 oz
显然前 2 项是相同的。我希望正则表达式首先在整个描述中查找“pc”,然后如果没有找到,则查找“oz”,但这不是它的作用。我需要得到的是:
desc inventory ounces
0 1 oz Silver Eagles Monster Box (500 pc) in stock 500 pc
1 Silver Eagle Monster Box (500 pcs 1 oz coins) in stock 500 pc
2 2021 10 oz Silver Royal Canadian Mint Bar out of stock 10 oz
我的原始数据框没有盎司,我正在尝试添加该列并同时提取正确的数据。我应该以不同的方式解决这个问题吗?
【问题讨论】:
标签: python-3.x regex pandas