我正在处理 AFRINIC whois 数据。我正在尝试查找子字符串第一次出现的位置。在示例中(pandas 数据框,左侧有一列“数据”是索引)我试图找到子字符串“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”的每个索引号。我可以使用该列表并只使用顶部的数字,但必须有更好的方法来做到这一点。任何帮助是极大的赞赏。
Use str.contains对于任何位置的检查:
out = afrinic.data.str.contains('inetnum').idxmax()
print (out)
2750383
Or str.startswith对于每个字符串的测试开始:
out = afrinic.data.str.startswith('inetnum').idxmax()
EDIT:
如果没有值匹配,则更通用的解决方案:
m = afrinic.data.str.contains('inetnum')
out = m.idxmax() if m.any() else 'no match'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)