根据字符串列的最后一个字母,使用掩码删除 Pandas df 行
delete Pandas df row using mask, based on the last letter of a string column
例如,在下面的 pandas 数据框中有 3 行,都是字符串。
我想根据条件下降 if str[-1] == '-':
df = pd.DataFrame({'a': ["123-","123-1","123-2"]})
但如果我这样做
df[df['a'][-1]=='-']
它会return一个错误。我知道可以使用 df.apply 函数来做到这一点。但我只是想知道是否可以用面具来完成。
您可以使用正则表达式创建掩码,如下所示。美元符号将确保连字符仅在字符串末尾匹配。
df.a.str.contains('-$')
这将 return 一个布尔系列。使用您的示例:
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)
例如,在下面的 pandas 数据框中有 3 行,都是字符串。
我想根据条件下降 if str[-1] == '-':
df = pd.DataFrame({'a': ["123-","123-1","123-2"]})
但如果我这样做
df[df['a'][-1]=='-']
它会return一个错误。我知道可以使用 df.apply 函数来做到这一点。但我只是想知道是否可以用面具来完成。
您可以使用正则表达式创建掩码,如下所示。美元符号将确保连字符仅在字符串末尾匹配。
df.a.str.contains('-$')
这将 return 一个布尔系列。使用您的示例:
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)