python - 在熊猫数据框中查找特定部分字符串第一次出现的索引位置
问题描述
我正在使用 AFRINIC whois 数据。我正在尝试找到第一次出现子字符串的位置。在示例中(左侧有一列“数据”的熊猫数据框是索引)我试图找到子字符串“inetnum”。所以我正在寻找的结果是“2750383”。
data
20 mnt-lower: info
21 changed: info
22 changed: info
23 changed: info
24 changed: info
25 source: info
26 as-block: info
27 type: info
28 descr: info
29 remarks: info
... ...
2750381 changed: info
2750382 source: info
2750383 inetnum: info
2750384 netname: info
2750385 descr: info
2750386 country: info
2750387 admin-c: info
2750388 tech-c: info
2750389 status: info
我试过了:
afrinic.data.ne('inetnum').idxmax()
但这给了我“[]”,因为它正在寻找第一个完整的字符串并产生 0 个结果。
我也试过:
indices = [i for i, s in enumerate(afrinic.data) if 'inetnum' in s]
但是,当我要寻找的只是第一个实例索引号时,这给了我“inetnum”这个词的每个索引号。我可以使用该列表并仅使用最高数字,但必须有更好的方法来做到这一点。任何帮助是极大的赞赏。
解决方案
用于str.contains
检查任何位置:
out = afrinic.data.str.contains('inetnum').idxmax()
print (out)
2750383
或者str.startswith
对于每个字符串的测试开始:
out = afrinic.data.str.startswith('inetnum').idxmax()
编辑:
如果没有匹配的值,则更通用的工作解决方案:
m = afrinic.data.str.contains('inetnum')
out = m.idxmax() if m.any() else 'no match'
推荐阅读
- visual-studio-code - pylance,linting 在 vscode python venv 中不起作用
- python - 如果列内容 b != 0 则打印列内容 a
- spring-boot - Spring Boot 建议端点优化
- audio - 以最少的重新编码静音音量
- github - 如何使用(不同的)GitHub 存储库上的降价文件作为静态 Next JS 站点的源?
- swift - NSKeyedUnarchiver 创建由其他人引用的同一对象的多个实例
- python - 如何找到标签的兄弟元素
- r - 使用 stat_compare_means() 和分组列获取括号
- haskell - 这个函数的正确签名是什么?
- laravel - Laravel 中的队列通知延迟