首页 > 解决方案 > 在熊猫数据框中查找特定部分字符串第一次出现的索引位置

问题描述

我正在使用 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”这个词的每个索引号。我可以使用该列表并仅使用最高数字,但必须有更好的方法来做到这一点。任何帮助是极大的赞赏。

标签: pythonpandasdataframe

解决方案


用于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'

推荐阅读