代码之家  ›  专栏  ›  技术社区  ›  Mooni

Python:当行元素由行名称中的字符串组成时,删除行

  •  2
  • Mooni  · 技术社区  · 7 年前

    我有数据帧:

            Col1   Col2    
    Rowab1   3     5
    Rowbc2   4     6
    Rowxy3   7     2
    

            Col1   Col2
    Rowab1   3     5
    Rowxy3   7     2
    

    df.loc[df.index.isin(['bc'])]
    

    但是,它不会在字符串中搜索“bc”,而是搜索整个独立字符串“bc”。是否有任何“like”运算符可以合并,例如

    df.loc[df.index.isin(['%bc%'])]  ?
    

    2 回复  |  直到 7 年前
        1
  •  2
  •   cs95 abhishek58g    7 年前

    另一种选择 pd.Series.str.find

    In [41]: df
    Out[41]: 
            Col1  Col2
    Rowab1     3     5
    Rowbc2     4     6
    Rowxy3     7     2
    
    In [42]: df[df.index.str.find('bc') > -1]
    Out[42]: 
            Col1  Col2
    Rowbc2     4     6
    
        2
  •  2
  •   blacksite    7 年前

    你在帖子里说你想要每一行 不包含 删除“bc”。以下是各种解决方案:

    >>> df.ix[[i for i in df.index if 'bc' in i]]
            Col1  Col2
    Rowbc2     4     6
    

    使用正则表达式和 re

    >>> df.ix[[i for i in df.index if re.match('.+bc.+', i)]]
            Col1  Col2
    Rowbc2     4     6
    

    你也可以使用 pandas.Series.str.match

    >>> df[pd.Series(data=df.index, index=df.index).str.match('.+bc.+')]
            Col1  Col2
    Rowbc2     4     6
    

    你不能直接使用 熊猫.Series.str.match pandas.core.indexes.base.Index 对象,所以我将其转换为 pandas.Series 对象,其值实际上是垃圾。您可以使用 str Series