微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用正则表达式筛选基于列条目的行?

下面是我正在使用的数据框的示意图(注意,这是一个代表性示例,并不是要演示任何列中的所有可能条目):

Name | Screen | Placeholder for other columns

Bill | GHRF (OOC) | text

Bob | GHRF (IC) | text

Sue | IRMS/CIR (OOC) | text

John | GHRF ISOFORMS IRMS CIR (OOC) | text

我试图在屏幕列中选择所有具有(OOC)的行.

通常情况下,我会用这样的dfnew = df [df [‘Column’] ==’Criteria’]来过滤数据帧,但这不适用于正则表达式.

我也尝试过dfnew = df [df [‘Screen’].filter(regex = r’OOC’,axis = 0)],我觉得这样可行,但没有.

有人可以向我解释如何使用正则表达式根据列条目选择行吗?

我想结束的是这样的:

Name | Screen | Placeholder

Bill | GHRF (OOC) | text

SUE | IRMS/CIR (OOC) | text

John | GHRF ISOFORMS IRMS CIR (OOC) | text

解决方法

DataFrame.filter过滤列名称,而不是值.你正在寻找str.contains.

dfnew = df[df['Screen'].str.contains(r'\(OOC\)')]

或者,如果您不需要正则表达式,请将其关闭

dfnew = df[df['Screen'].str.contains(r'(OOC)',regex=False)]
print(dfnew)
   Name                        Screen
0  Bill                    GHRF (OOC)
2   Sue                IRMS/CIR (OOC)
3  John  GHRF ISOFORMS IRMS CIR (OOC)

如果你打算在dfnew上做更多的索引/作业,我建议你改用它

dfnew = df[df['Screen'].str.contains(r'\(OOC\)')].copy()

以后要避免使用SettingWithcopyWarning.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐