python - 根据字符串列的最后一个字母,使用掩码删除 Pandas df 行
问题描述
例如,在下面的 pandas 数据框中,有 3 行,所有这些都是字符串。我想根据条件放弃if str[-1] == '-':
df = pd.DataFrame({'a': ["123-","123-1","123-2"]})
但如果我这样做
df[df['a'][-1]=='-']
它将返回一个错误。我知道可以使用 df.apply 函数来做到这一点。但我只是想知道它是否可以用面具完成。
解决方案
您可以使用正则表达式创建掩码,如下所示。美元符号将确保连字符仅在字符串末尾匹配。
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)
推荐阅读
- c - Is it possible to optimize and faster multiplying an array by a number in C?
- javascript - 反应路由器动态路由未按预期生成
- swiftui - SwiftUI layout with left and center views, that avoid overlap
- autohotkey - AUTOHOTKEYS 以及如何按下按钮
- ios - 为什么在类中调用函数也会打印返回类型?
- python - 使用 selenium xpath 提取 html 源代码
- java - 将用户输入从editText传递到xml中的editText
- python - 如何使用 tensorflow 在 Python 中调用通用句子编码器模型
- prestashop-1.6 - 如何从 Prestashop 1.6.1.x 中的 managewishlist.tpl 文件中获取 $static_token 变量
- html - 如何使导航栏菜单元素仅对移动设备可见?