【问题标题】:pandas dataframe search with contains and get the row number熊猫数据框搜索包含并获取行号
【发布时间】:2021-03-23 18:26:23
【问题描述】:

在数据框中,我想在第一列中搜索一个字符串,并在找到该字符串时,我想获取行号并将其分配为变量,

我的数据框看起来像这样

df = pd.DataFrame({'A': ['xx', '--- bios ---', 'yy', 'zz', '--- os ---'],'B': ['rat', '', 'winter', 'host','']})

我正在尝试获取字符串的行号并将其分配给变量,如下所示

var = df.iloc[:,0].str.contains('--- bios ---').index

其中 --- bios --- 是搜索词,我正在尝试获取索引

但我没有得到想要的输出,我期望的输出是 4,这是行号

【问题讨论】:

  • 请提供minimal reproducible example。您收到了一些建议,但似乎没有满足您的需求。鉴于这种帮助的能力,您可能需要向我们展示一个示例,以明确地展示您正在寻找的内容。
  • 这是我的日期框架的样子,希望这个更具体,df = pd.DataFrame({'A': ['xx', '--- bios ---', 'yy ', 'zz', '--- os ---'],'B': ['', 'rat', 'winter', 'host','']})
  • edit 您的问题并包含该信息。还包括您期望得到的回报。

标签: python pandas


【解决方案1】:

df.iloc[:,0].str.contains('--- bios ---') 仍然具有与df 相同的(完整)索引。你可能想要:

df.index[df.iloc[:,0].str.contains('--- bios ---')]

或:

df[df.iloc[:,0].str.contains('--- bios ---')].index

【讨论】:

  • 我要这个字符串的行号
  • 是的,试试这些行,或者应该给你发生这种情况的行。
  • 我猜它有效,但是在我正在使用的数据框中,该列包含空值,因此返回此错误“无法使用包含 NA / NaN 值的非布尔数组进行掩码”...我尝试传递 na = True ,然后将行索引重置为 0 ...这不是我想要的
  • 使用df.iloc[:,0].str.contains('--- bios ---')==True?
  • @ Quang Hoang,我采用了您的方法,并进行了如下小修改 var = ((df[df.iloc[:,0].str.contains('--- bios -- -',na=False)].index).values)[0]
【解决方案2】:

query

q = "--- bios ---"
c = df.columns[0]

df.query(f'"{q}" in {c}').index

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2021-01-19
    • 2014-10-11
    • 1970-01-01
    相关资源
    最近更新 更多