[英]Extracting substring in python string using regular expression
我有一个这样的熊猫专栏:
LOD-NY-EP-ADM
LOD-NY-EC-RUL
LOD-NY-EC-WFL
LOD-NY-LSM-SER
LOD-NY-PM-MOB
LOD-NY-PM-MOB
LOD-NY-RMK
LOD-NY-EC-TIM
我希望新列中的输出为
EP
EC
EC
LSM
PM
PM
RMK
EC
我尝试了这个:
pattern=df.column[0:10].str.extract(r"\w*-NY-(.*?)-\w*",expand=False)
尽管它适用于所有内容,但无法得到RMK并给出NaN,因为此后没有任何内容,并且它查找-\\ w零次或多次。 但是,如果在RMK之后什么也没有,那应该可以工作。
知道发生了什么事吗?
如果熊猫的语法不熟悉,我们可以只使用它们的数组并使用正则表达式。
您可以只使用常规的python吗? 假设df是您的数据框,而row是您的行的名称。
series = df.row
new_list = [i.split('-')[2] for i in series]
new_series = pd.Series(new_list)
pattern=df.column[0:10].str.extract(r"\w*-NY-(\w+)",expand=False)
参见https://regex101.com/r/3uDpam/3
您正则表达式的意思字符串匹配必须有3 -
字符。 我更改了它,所以最后-XX
可能发生0或1次。
更新:已更改,因此第二组不被捕获(已添加?:
:)
更新:感谢卡西米尔,在模式结束时删除了无用的组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.