Python(Pandas) - 我应该在这里使用哪种正则表达式语法?
Posted
技术标签:
【中文标题】Python(Pandas) - 我应该在这里使用哪种正则表达式语法?【英文标题】:Python(Pandas) - Which Regex Syntax should i use here? 【发布时间】:2021-12-06 01:05:54 【问题描述】:这里我在 Pnadas 中使用 regex(正则表达式)。
NIFTY30DEC219000CE.NFO
NIFTY30DEC2116000CE.NFO
NIFTY30DEC2116000CE
NIFTY30DEC2116111PE
NIFTY30DEC218100PE
我有这种类型的字符串,其中'9000'
是4位字符或16000
或 5 位字符,与 more 相同。
并且输出应该是-
9000
16000
16000
16111
8100
我在输出中不需要这个30DEC21
。
Syntax image - which I'm using. 我正在使用这种语法。但我得到了错误的输出。
这是我的代码 - image of My Code
【问题讨论】:
这不起作用,它给了我 None 类型的数据,因为这里我也有 PE 和不同的数据。 【参考方案1】:我会将str.extract
与以下正则表达式模式一起使用:
\d2[A-Z]3\d2(\d+)
Python 脚本:
df["output"] = df["col"].str.extract(r'\d2[A-Z]3\d2(\d+)')
这是一个demo,表明提取逻辑正在运行。
【讨论】:
我已经使用了这个,但我得到的是输出“30DEC219000”,但我只想要“9000”这个。 不,我的 Python 代码的输出应该只是9000
,这是捕获组的目标。你确定你在这里运行我的代码吗?
这也不起作用,因为它给了我“25MAR2113000”的完整字符串,但我只需要这个字符串中的“13000”。
@krishnagupta 您没有在我的答案中运行代码。您正在运行其他代码。
我只是在使用你的语法。【参考方案2】:
r"NIFTY30DEC21(\d4,5)(CE\.NFO|CE|PE)"
【讨论】:
以上是关于Python(Pandas) - 我应该在这里使用哪种正则表达式语法?的主要内容,如果未能解决你的问题,请参考以下文章
使用 pandas read_csv 方法的 Python 多级索引
Python pandas:我们可以避免在 groupby/apply 这种情况下应用吗?