python - 如何在 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()
.
解决方案
您正在搜索这个:
pandas.Series.str.contains为与基于re.search
.
正如 Pandas 文档所述,如果你想要一个基于你的掩码,re.match
你应该使用:pandas.Series.str.match。
您还可以使用以下内容:
pandas.Series.str.extract,它在您执行分析的 Series 的每一行上提取模式的第一个匹配项。NaN
将填充不包含该模式的行,以便您可以获取Nan
值以检索此类行。
推荐阅读
- javascript - 传单:pointToLayer 的异步替代方案?
- python - 通过 UDP 协议发送 WAV 文件
- android - 如何使用 IDroid UI 绑定 API
- javascript - 在获得将数据插入 mysql 的响应后,我试图调用一个名为 sendEmail() 的函数
- json - HttpClientFactory 和 WebAssembly .Net 核心托管在客户端崩溃
- google-app-engine - TypeError:无法在第 100 行读取未定义的属性“4”
- amazon-web-services - 如何使用 Kops 公开部署在 AWS 中 kubernetes 上的 GRPCS 服务
- spring-data-jpa - Spring Boot DataJpaTest 因 java.lang.IllegalStateException 失败:原因:给定类型必须是接口
- sql - 重复值 SQL
- r - 如何计算R中组内日期的时间间隔?