从文本D中提取特定数字

2024-04-23 12:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一种无监督的机器学习算法,研究大麻数据,为类似品种的大麻提供建议。我遇到了一个小小的障碍,即CBD与THC的比率,这是一个超级导入数据点,隐藏在“描述”列中,在措辞上没有真正的一致性。有时它的“X:Y CBD/THC比率”,有时它的“THC/CBD比率约为X:Y”,有时在其中加入其他单词,从编码的角度来看,这会使它更加混乱

我目前的策略是使用if语句搜索所有描述以提取数据,但我不知道如何使其工作。这是我的基本想法

strain_breakdown['THC/CBD Ratio'] = 0

for s in strain_data:
    if strain_data['Description'].str.contains(f'THC:CBD ratio of about {int}:{int}'):
        strain_breakdown['THC/CBD Ratio'] = int/int

显然,上面的代码不起作用,但我正试图找到类似这样的东西

我的计划是遵循这一点,使用elif语句引用不同描述中使用的其他方式,并形成单独的列,如果THC-CBD比率和CBD-THC比率的语句,bu-to只需要找到一种方法来提取数字。有人有什么想法吗


Tags: 数据算法机器dataif语句int比率
1条回答
网友
1楼 · 发布于 2024-04-23 12:26:57

您可以将“extract”函数用于包含以下命名组的正则表达式:

df = strain_data.Description.str.extract(r'THC:CBD ratio of about (?P<THC>[\d+]):(?P<CBD>[\d+])') # it returns a dataframe with two columns named "THC" and "CBD" with the values of THC and CBD if found in the description or with NaN if not found

strain_breakdown['THC/CBD Ratio'] = df.THC / df.CBD

您可以使用正则表达式来避免您计划在之后执行的elif语句

相关问题 更多 >