我在我的数据框中有一列,其中用于测试的所有设备都以代码形式存在,并分组在一起.

data = [{'Equipment': 'C-FDO:ER09999,M-GEP:IO09765,P-EE047777,P-PP04757,P-IR07086,P-EE2222,P-ER20000,tEE3-ERE:CC046846'},
        {'Equipment': 'C-FDO:ER09999,M-GEP:IO09765,tEE3-ERE:CC04647, P-CC07777,P-PP047557,P-IR07086,P-EE2223,P-ER20000'},
        {'Equipment': 'tEE3-ERE:CC04648, C-FDO:ER7809999,M-GEP:IO09765,P-PP07777,P-PP04757,P-IR07086,P-EE2224,P-ER20000'},
        {'Equipment': 'C-FDO:ER09999,M-GEP:IO09765,P-PP07777, P-PP04757, tEE3-ERE:CC04649, P-ER01465,P-EE22250,P-ER201212000'}]

我需要获得每行的4th occurrence of the "P-" equipmentall the occurrences of the "tEE3-ERE"设备,但我不能通过位置切片来做到这一点,因为它们是洗牌的.

我试着用逗号表示split,用regex表示extract,但不起作用,因为我有不止一个"P-". 因此,我不需要出现任何其他P-(但第4)或其他设备,如"C-FDO"和"M-GEP".

Expected result:

P-EE2222  tEE3-ERE:CC046846
P-EE2223  tEE3-ERE:CC04647
P-EE2224  tEE3-ERE:CC04648
P-EE22250 tEE3-ERE:CC04649

P-      tEE3-ERE
EE2222  CC046846
EE2223  CC04647
EE2224  CC04648
EE22250 CC04649

推荐答案

你确实可以使用str.extractall,过滤匹配数(3表示第4个),jointEE3-ERE的提取值:

out = (df['Equipment'].str.extractall('P-([^,]+)')
       .query('match == 3').droplevel('match')
       .rename(columns={0: ('P-')})
       .join(df['Equipment'].str.extractall('tEE3-ERE:([^,]+)')[0]
             .droplevel('match').rename('tEE3-ERE'))
      )

输出:

        P-  tEE3-ERE
0   EE2222  CC046846
1   EE2223   CC04647
2   EE2224   CC04648
3  EE22250   CC04649

替代输出:

out = (df['Equipment'].str.extractall('(P-[^,]+)')
       .query('match == 3').droplevel('match')
       .join(df['Equipment'].str.extractall('(tEE3-ERE:[^,]+)')[0]
             .droplevel('match').rename(1))
      )

           0                  1
0   P-EE2222  tEE3-ERE:CC046846
1   P-EE2223   tEE3-ERE:CC04647
2   P-EE2224   tEE3-ERE:CC04648
3  P-EE22250   tEE3-ERE:CC04649

Python相关问答推荐

为什么for循环中会有范围错误?

属性错误:';Styler';对象没有属性';样式';

用tab键改变焦点的Qt事件

从Pandas Dataframe导出Excel透视表

如何将按钮移动到按钮在GRadio中使用或更改的框之前?

有没有可能用PYTHON打印这个图案?

在两条直线之间到处寻找最大半径圆

如何从灰色背景图像中获取白色文本并将其粘贴到另一幅图像上

将多个函数作为参数匿名传递给另一个函数

使用LIST将数据框列的子集映射到字典值

Pandas Python-如何使用Pandas从包含分组/可折叠列文件的EXCEL中读取数据

为什么matplotlib.pyplot.bar有时会显示额外的x值?

请求库在Python中继续工作,不响应任何内容

按列表中的每个单词交换一组字符

从文本库中的屏幕内部切换模式--Python

在类中调用Helper函数的正确方法

是否应该在其他子类继承的类中使用名称重写?

如何从Json中提取数据并将其放入表格格式?

有没有可能在不安装Chrome App的情况下使用Selify?

如何在曲面上绘制圆弧