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

根据字符串列的最后一个字母,使用掩码删除PADAS数据流

  •  1
  • Psyduck  · 技术社区  · 6 年前

    例如,在下面的熊猫数据框中,有3行,所有行都是字符串。 我想因地制宜地去 if str[-1] == '-':

    df = pd.DataFrame({'a': ["123-","123-1","123-2"]})
    

    但是如果我这样做的话

    df[df['a'][-1]=='-']
    

    它将返回一个错误。我知道使用df.apply函数是可能的。但我只是想知道是否可以用面具来完成。

    1 回复  |  直到 6 年前
        1
  •  4
  •   muzzyq    6 年前

    可以使用下面的正则表达式创建遮罩。美元符号将确保连字符仅在字符串末尾匹配。

    df.a.str.contains('-$')
    

    这将返回布尔序列。使用您的示例:

    0     True
    1    False
    2    False
    

    然后可以像往常一样使用 df.drop() 以下内容:

    df.drop(df[df.a.str.contains('-$')].index, inplace=True)
    

    如果需要,请重置索引:

    df.reset_index(inplace=True, drop=True)