python pandas数据帧中的字符串匹配

2024-10-05 13:19:05 发布

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

enter image description here

我有一个有4列的数据帧(300000行)。我有一个列“Model”,其中有以下示例值。在

  • 1) CPL40AUP50(B,W)(空白,EM,PCEM,MSEM)2)CPL40AUP50(B,W)(400,毫秒) 3) CPL40AUP50(B,W)PC 4)CPL40AUP50(B,W)PCMS 5)CPL40AUP50[B,W][空白, 400]6)CPL40AUP XXXX XXXXX

在model字段中,任何类似(A,B)的值都意味着它可以是A或B。 例如,字段2表示可以有4个组合 CPL40AUP50B400 CPL40AUP50BMS CPL40AUP50W400 CPL40AUP50WMS公司 字段6表示cpl40 AUP“XXXX”“XXXXX”-任何时候有超过2个连续的XXX,这意味着在这些位置上接受任何字符。Number of XXX=该位置的字符数

附加了示例数据帧。在

附上样本作为字典

{型号:{152001:'CPL40AUP50(B,W)(Blank,EM,PCEM,MSEM)', 152103:“CPL40AUP50(B,W)(400,毫秒)”, 152192:'CPL40AUP50(B,W)PC', 152196:'CPL40AUP50(B,W)PCMS', 291083:'CPL40AUP50[B,W][Blank,400]'}, '产品Id':{152001:'PGK58TGD', 152103:'P5QBAPTD', 152192:'PFNJED7R', 152196:'PYSCGR1W', 291083:'PH57RZA3'}, '报告CCT':{152001:5000.0, 152103:5000.0, 152192:5000.0, 152196:5000.0, 291083:5000.0}, '报告瓦数':{152001:41.07, 152103:41.07, 152192:41.07, 152196:41.07, 291083:40.0}

第1部分 我想搜索存储在变量中的型号。 a=CPL40AUP50B400,并返回整个行,其中可能存在此可能的组合。 我只想找到精确的搜索词并打印行,而不是部分字符串匹配

我把所有的“[]”方括号都换成了括号“()” 我把“,”逗号改成“|”

我这样做是为了使用regex函数。但我无法继续。在

第二部分 找到什么时候有XXX。如果有XXX,则表示可以有任何字符而不是XXX。在

示例:6)CPL40AUP XXXX XXXXX

是指CPL40AUP AAAA AAAAA或CPL40AUP BBBB 11111

任何东西都可以代替XXX,所以我必须找到一行,其中有一个型号与除XXX以外的所有其他字符匹配


Tags: 数据示例字符空白xxxemxxxxxpc
1条回答
网友
1楼 · 发布于 2024-10-05 13:19:05

首先,设置要测试的数据帧:

import pandas as pd
model = ["CPL40AUP50(B,W)(Blank ,EM, PCEM, MSEM) ", "CPL40AUP50(B,W) (400, MS) ", "CPL40AUP50(B,W)PC ", "CPL40AUP50(B,W)PCMS ", "CPL40AUP50[B,W][Blank, 400] ", "CPL40AUP XXXX XXXXX"]
df = pd.DataFrame({'Model': model, 'Wattage': range(40, 46)})

对于第一个问题,获取包含特定字符串(例如“PC”)的行,请执行以下操作:

^{pr2}$

str.contains("PC")返回一个布尔序列,如果该行在“Model”字段中包含“PC”,则该序列为真。然后df[ mask ]返回mask为True的行。在

“PC”是一个正则表达式模式,而不仅仅是字面字母。因此,对于第二个问题,下面将获得包含两个或多个连续X字符的任何行:

df[ df['Model'].str.contains("XX+") ]

相关问题 更多 >

    热门问题