python - 函数中带有字符串模式的Python过滤数据框
问题描述
我是 Python 新手,我正在尝试编写一个函数来使用搜索过滤数据框,该搜索将应用于应用程序。我想在字符串的开头搜索特定模式的字符串。
目前,我已经成功实现了这一点,但仅适用于包含模式的字符串,字符串中的任何位置。这是我的代码:
sequence = [["TTTGCGAAA", "ref"], ["TTTGGGAAA", "ref"], ["TTGGGGTTT", "iso"], ["TTAGGGAAA", "iso"], ["TATGGGAAA", "iso"]]
df = pd.DataFrame(sequence, columns=["sequence", "mapping"])
def search_table(search):
filtered_df = df[df['sequence'].str.contains(search)]
print(filtered_df)
search_table("TTT")
output:
sequence mapping
0 TTTGCGAAA ref
1 TTTGGGAAA ref
2 TTGGGGTTT iso
但这^并不是我想要的。我想要的输出如下:
sequence mapping
0 TTTGCGAAA ref
1 TTTGGGAAA ref
我看过reg express,但我一点也没有成功。有人可以帮助我或建议我可以尝试哪些功能吗?
解决方案
只需添加 ^
str.contains 方法
def search_table(search):
filtered_df = df[df['sequence'].str.contains('^'+search)]
print(filtered_df)
这是行首的正则表达式符号。默认情况下,str.contains
接受正则表达式。
值得学习有关正则表达式的手册和教程,因为它在很多情况下都非常有帮助,甚至在其他语言中也是如此。
您的问题的另一种可能性是使用:
df[df.sequence.str.contains('^('+yourpattern+'){'+N+'}')]
where^
表示行首,('yourpattern'){N}
表示'yourpattern' N 次,yourpattern 为字符串,N 为整数
推荐阅读
- javascript - 仅显示第一部分内容的 css 选择器
- javascript - Symfony v3.4 和 jsTree v3.3.5 和 JSON 格式的数据
- java - 如何在 Springboot 中针对多个基本 ldap dns 进行验证
- ajax - Laravel Passport 为 Guzzle HTTP 客户端创建新的 API 令牌
- json - 在 Swift 中使用不记名令牌和 json 正文发送发布请求
- ios - 搜索结果迅速转移到其他视图控制器
- sql-server - 如何检索截断记录 (SQL Server) 。可行吗?
- java - 尝试创建此矩阵时不断出现错误?
- php - 如何一一获取 ACF 转发器字段值?
- javascript - 当试图在数组中存储一个值时,它没有被正确添加