使用掩码删除Pandas df行,基于字符串列的最后一个字母

时间:2018-06-16 14:04:59

标签: python pandas mask

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

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

但如果我这样做

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

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

1 个答案:

答案 0 :(得分:4)

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

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)