【问题标题】:delete Pandas df row using mask, based on the last letter of a string column根据字符串列的最后一个字母,使用掩码删除 Pandas df 行
【发布时间】:2018-11-26 01:38:49
【问题描述】:

例如,在下面的 pandas 数据框中,有 3 行,所有这些都是字符串。 我想根据条件放弃if str[-1] == '-':

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

但如果我这样做了

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

它会返回一个错误。我知道可以使用 df.apply 函数来做到这一点。但我只是想知道它是否可以用面具来完成。

【问题讨论】:

    标签: python pandas mask


    【解决方案1】:

    您可以使用正则表达式创建掩码,如下所示。美元符号将确保连字符仅在字符串末尾匹配。

    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)
    

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 2020-04-06
      • 2022-11-26
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 2019-11-22
      相关资源
      最近更新 更多