Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >熊猫栏中的提取正则表达式

熊猫栏中的提取正则表达式
EN

Stack Overflow用户
提问于 2021-07-29 13:51:31
回答 2查看 80关注 0票数 1

嗨,我正在寻找从不同产品的数量从Df列到一个新的列。目前,这些数字是在产品类型之后出现的。

数据如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PRODUCTS
PULSAR AT 20 MG ORAL 30 TAB RECUB
LIPITOR 40 MG 1+1 ORAL 15 TAB
LOFTYL 150 MG ORAL 30 TAB
SOMAZINA 500 MG ORAL 10 COMP RECUB
LOFTYL 30 TAB 150 MG ORAL 
*Keeps going more entries...*

我的功能如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df['PZ'] = df['PRODUCTS'].str.extract('([\d]*\.*[\d]+)\s*[tab|cap|grag|past|sob]',flags=re.IGNORECASE)

产品可以是TAB,COMP,AMP,SOB,过去,GRAG .和其他人

我想得到这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PRODUCTS                              PZ
PULSAR AT 20 MG ORAL 30 TAB RECUB     30
LIPITOR 40 MG 1+1 ORAL 15 TAB         15
LOFTYL 150 MG ORAL 30 TAB             30
SOMAZINA 500 MG ORAL 10 COMP RECUB    10
LOFTYL 30 TAB 150 MG ORAL             30

我可以在我的行中做些什么来得到以下信息呢?

谢谢你读到我和你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-29 13:56:21

您可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
df = pd.DataFrame({'PRODUCTS':['PULSAR AT 20 MG ORAL 30 TAB RECUB','LIPITOR 40 MG 1+1 ORAL 15 TAB','LOFTYL 150 MG ORAL 30 TAB','SOMAZINA 500 MG ORAL 10 COMP RECUB','LOFTYL 30 TAB 150 MG ORAL']})
rx = r'(?i)(\d*\.?\d+)\s*(?:tab|cap|grag|past|sob|comp)'
df['PZ'] = df['PRODUCTS'].str.extract(rx)
>>> df
                             PRODUCTS  PZ
0   PULSAR AT 20 MG ORAL 30 TAB RECUB  30
1       LIPITOR 40 MG 1+1 ORAL 15 TAB  15
2           LOFTYL 150 MG ORAL 30 TAB  30
3  SOMAZINA 500 MG ORAL 10 COMP RECUB  10
4           LOFTYL 30 TAB 150 MG ORAL  30
>>> 

如果像tabcap等这样的单词是完整的单词,并且不能是较长的单词的一部分,那么您需要在模式的末尾添加一个单词边界,即rx = r'(?i)(\d*\.?\d+)\s*(?:tab|cap|grag|past|sob|comp)\b'

regex演示。详细信息

  • (?i) -一个不区分大小写的内联修饰符
  • (\d*\.?\d+) -第1组:零或多个数字,一个可选的.,然后一个或多个数字
  • \s* -零或更多空格字符
  • (?:tab|cap|grag|past|sob|comp) -一个非捕获组(为了不干扰Series.str.extract输出),与其内的任何替代子字符串相匹配。
  • \b -一个词的边界。
票数 0
EN

Stack Overflow用户

发布于 2021-07-29 14:26:30

也许.

给出了一个数据格式(注:我使产品在一行中出现了两次,以防万一发生这种情况).

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    PRODUCTS
0   PULSAR AT 20 MG ORAL 30 GRAG RECUB
1   LIPITOR 40 MG 1+1 ORAL 15 TAB
2   LOFTYL 150 GRAG ORAL 30 TAB
3   SOMAZINA 500 MG ORAL 10 COMP RECUB
4   LOFTYL 30 TAB 150 MG ORAL
5   *Keeps going more entries...*

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import re

data = {'PRODUCTS' : ["PULSAR AT 20 MG ORAL 30 GRAG RECUB", "LIPITOR 40 MG 1+1 ORAL 15 TAB", \
                      "LOFTYL 150 GRAG ORAL 30 TAB", "SOMAZINA 500 MG ORAL 10 COMP RECUB", \
                      "LOFTYL 30 TAB 150 MG ORAL" , "*Keeps going more entries...*"]}

df = pd.DataFrame(data)

# maintain a list of products to find
products = ['TAB', 'COMP', 'AMP', 'SOB', 'PAST', 'GRAG']

def getProduct(x):
    found = list()
    for product in products:
        pattern = r'(\d+)' + ' ' + str(product)
        found.append(re.findall(pattern, x))
    found = list(filter(None, found))
    found = [item for sublist in found for item in sublist]
    found = ", ".join(str(item) for item in found)
    return found

df['PZ'] = [getProduct(row) for row in df['PRODUCTS']]

print(df)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    PRODUCTS                            PZ
0   PULSAR AT 20 MG ORAL 30 GRAG RECUB  30
1   LIPITOR 40 MG 1+1 ORAL 15 TAB       15
2   LOFTYL 150 GRAG ORAL 30 TAB         30, 150
3   SOMAZINA 500 MG ORAL 10 COMP RECUB  10
4   LOFTYL 30 TAB 150 MG ORAL           30
5   *Keeps going more entries...*   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68583167

复制
相关文章
jmeter的正则表达式提取器_正则表达式提取
在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达式提取器了。
全栈程序员站长
2022/10/01
4.1K0
jmeter的正则表达式提取器_正则表达式提取
Jmeter 正则表达式提取括号中的文本内容
     jmeter里接口请求结束后,如果后续接口请求想要获取本次返回结果的内容,就需要正则表达式提取器来获取参数,当然也可以用json path extractor来提取(这个简单一些)。不过Jmeter里很多地方的约束条件和断言都是需要正则表达式来匹配的,所以大家还是要学习一下正则表达式的语法,以便更好更效率的完成测试内容。下面简单介绍一下常用的语法,这次先写一半,下次再补另一半。正则表达式的内容还是很多的,我也只是学了其中的一些皮毛,通用的东西,后期再慢慢深入吧,而且要学以致用,学的东西一定要亲自实际体验一下才会记得牢,好了,言归正转。
全栈测试开发日记
2023/02/02
1.6K0
Jmeter 正则表达式提取括号中的文本内容
正则表达式提取子表达式中的内容
正则表达式规则内容较多,此处仅介绍提取()``{}子表达式的内容,并介绍涉及的规则。
路之遥
2022/10/11
3.4K0
数据提取-正则表达式
在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式!
小小杰啊
2022/12/21
1K0
jmeter的正则表达式提取器_jmeter正则提取器的使用
首先,先在正则表示式提取器里面添加我们找到的左右边界 然后写好正则表达式 最后确定边界是唯一的
全栈程序员站长
2022/10/02
8340
jmeter的正则表达式提取器_jmeter正则提取器的使用
js正则表达式提取汉字
参考博客 https://blog.csdn.net/yelin042/article/details/76982683
周杰伦本人
2023/10/12
1650
jmeter的正则表达式提取器_正则表达式详解
关于JMeter的使用,花费大量精力写了JMeter的一系列文章,有图有案例,一方面总结起来作为备忘,一方面希望能给初学者一些帮助。觉得有所帮助的朋友,请点个赞,对于疏漏之处也欢迎指教。
全栈程序员站长
2022/10/01
4.3K0
jmeter的正则表达式提取器_正则表达式详解
正则表达式提取指定内容
using System; using System.Text.RegularExpressions; public partial class _Default : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         string pattern = @"{LINKTECH\|(\S[^{}]+)}";         string Test = "{B
菩提树下的杨过
2018/01/22
1K0
Palette状态栏颜色提取,写的不错就分享了
Palette 说Palette之前先说下前面提到的Pager。ViewPager是什么大家应该都是知道的了,一般ViewPager、xxxTabStrip、Fragment三个好基友是一起出现的。这里的xxxTabStrip是使用Github上的PagerSlidingTabStrip。当我们的Pager切换时伴随着Fragment的变化,而Fragment里的内容一般是不同的,所以每个Fragment里的一般视觉效果也是不同的,所以我们可以用Palette来去提取Fragment中的主色调,那Fra
xiangzhihong
2018/02/01
9090
Palette状态栏颜色提取,写的不错就分享了
提取binlog中的DDL
有时候需要审计看看谁执行了啥操作. 但很多环境是没得审计的. 这时候就可以通过解析binlog 得到ddl执行的记录了(审计dml套麻烦了).
大大刺猬
2023/05/26
7310
提取binlog中的DDL
Jmeter的正则表达式提取参数「建议收藏」
2:观察debug取样器前的名称为“北京”表示city的值取到了(另外:city_g1的值也是“北京”所以变量取city_g1也是一样的结果)
全栈程序员站长
2022/09/30
2.6K0
Jmeter的正则表达式提取参数「建议收藏」
正则提取字符串中的数字_正则表达式忽略空格python
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
3.3K0
正则提取字符串中的数字_正则表达式忽略空格python
地址栏信息提取以及上传文件函数
<!–文件名:file.php和filenames.php 在同一文件夹下–> <meta http-equiv=”Content-Type” content=”text/html; charset=
苦咖啡
2018/05/07
6010
性能测试-Jmeter正则表达式提取
jmeter中,接口自动化的关键在于参数关联。比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?在jmeter中,可以利用正则表达式提取器来帮助我们完成这一动作。 1、
用户6367961
2020/02/01
1.7K0
PHP 提取富文本中的全部图片(提取文章中的全部图片)
未经允许不得转载:肥猫博客 » PHP 提取富文本中的全部图片(提取文章中的全部图片)
超级小可爱
2023/02/20
2.2K0
通过正则表达式提取 Email 地址的Java代码
import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class RegularExpression { public static void main(String[] args) throws IO
艳艳代码杂货店
2021/10/29
9270
jmeter正则表达式提取器提取特定字符串后的全部内容
jmeter进行JDBC请求时,请求后的响应结果在传递给下一个请求使用时,需要用到关联,也在jmeter中,关联通过正则表达式提取器实现。
流柯
2018/08/31
3.5K0
jmeter正则表达式提取器提取特定字符串后的全部内容
爬虫系列(6)数据提取--正则表达式。
在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式!
野原测试开发
2019/07/10
1.2K0
提取网页中的超链接
usingSystem;usingSystem.Xml;usingSystem.Text;网络
Java架构师必看
2021/03/22
1.5K0
python提取视频中的音频
一.安装模块 pip3 install moviepy 二.代码 from moviepy.editor import * video = VideoFileClip('1.mp4') #视频所在路径 audio = video.audio audio.write_audiofile('1.mp3') #音频所在路径
小小咸鱼YwY
2020/09/28
1.9K0

相似问题

熊猫数据栏中的词汇提取

22

paths熊猫栏版本的提取

25

熊猫从栏中提取数字到新的栏中。

53

用正则表达式从熊猫数据栏中提取数据

23

用正则表达式从熊猫df栏中提取单词

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文