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) - 我应该在这里使用哪种正则表达式语法?的主要内容,如果未能解决你的问题,请参考以下文章

python怎么打开pandas

使用 pandas read_csv 方法的 Python 多级索引

Python pandas:我们可以避免在 groupby/apply 这种情况下应用吗?

我们应该使用 pandas.compat.StringIO 还是 Python 2/3 StringIO?

Pandas:这里的内存泄漏在哪里?

如何在 pandas python 中显示多个图表