首页 > 解决方案 > 如何在 Pandas 数据框中查找 re.search 失败的行

问题描述

我正在尝试使用以下格式从 Metar 字符串中提取风向:

EGAA 010020Z 33004KT 300V010 9999 FEW029 04/04 Q1019

我正在使用它来提取适用于我的大部分数据但在某些字符串上失败的风向:

df["Wind_Dir"] = df.metar.apply(lambda x: int(re.search(r"\s\d*KT\s", metar_data.metar[0]).group().strip()[:3]))

我想检查它失败的 Metar 字符串,而不是group()退出,re.search我只是按如下方式应用搜索来获取re.Match对象:

df["Wind_Dir"] = df.metar.apply(lambda x: re.search(r"\s\d*KT\s", x))

我试过按类型和 Null 过滤,但这些都不起作用。

任何帮助,将不胜感激。


不幸的是,感谢您的回答,尽管使用两者来解决我的问题,但我无法将它们都标记为解决方案。

最后,我将正则表达式更改为:

df["Wind_Dir"] = df.metar.str.findall(r"Z\s\d\d\d|Z\sVRB")

匹配可变方向,但如果没有df.metar.str.contains().

标签: pythonregexpandas

解决方案


您正在搜索这个: pandas.Series.str.contains为与基于re.search.

正如 Pandas 文档所述,如果你想要一个基于你的掩码,re.match你应该使用:pandas.Series.str.match

您还可以使用以下内容: pandas.Series.str.extract,它在您执行分析的 Series 的每一行上提取模式的第一个匹配项。NaN将填充不包含该模式的行,以便您可以获取Nan值以检索此类行。


推荐阅读