我有一个包含两列的数据框架,两列都包含字符串
对于正则表达式结果中的命名捕获组“termduration”,我想删除列B(Resources)的正则表达式匹配与列A(ServicePlan)不匹配的行。
数据来源:
ServicePlan Resources
0 Plan A (CSP COM BAS 1YR ANN) Resource A (CSP COM BAS 1YR ANN)
1 Plan A (CSP COM BAS 1YR ANN) Resource B (CSP COM BAS 1YR ANN)
2 Plan A (CSP COM BAS 1YR ANN) Resource C (CSP COM BAS 6YR ANN)
字符串
我尝试了以下操作,但我得到了一个类型错误。我正在努力比较两个字符串之间的正则表达式名为捕获组的结果。
import pandas as pd
import re
e_name = r'(?P<name>.*)\((?P<product>[A-Z]{3})\s(?P<type>[A-Z]{3})\s?(?P<baseattach>BAS|ADD|ATT|SWS)?\s?(?P<telco_overusage>OVG)?\s?(?P<termduration>[A-Z0-9]{3})?\s?(?P<billing>[A-Z0-9]{3})\)$'
name_re = re.compile(e_name)
data = {'ServicePlan': ["Plan A (CSP COM BAS 1YR ANN)","Plan A (CSP COM BAS 1YR ANN)","Plan A (CSP COM BAS 1YR ANN)"],
'Resources': ["Resource A (CSP COM BAS 1YR ANN)","Resource B (CSP COM BAS 1YR ANN)","Resource C (CSP COM BAS 6YR ANN)"]}
df = pd.DataFrame(data)
print(df)
df[~(name_re.findall(df['ServicePlan'].astype(str))[0]['termduration']).ne(name_re.findall(df['Resource'].astype(str))[0]['termduration'])]
print(df)
型
1条答案
按热度按时间kiz8lqtg1#
使用
pandas.Series.str.extract
:个字符