python - Pandas:如果包含条件则删除一行
问题描述
我有一个大数据框,我需要排除一些包含对我来说很困惑的值的行。
我想到了一个嵌套在这样的 for 循环中的 if 语句
for x in range (6655):
test = pseudoF2['Match'][x]
if test[:2].lower() == 'ab':
pseudoF2.drop(test, inplace=True)
问题是我不断收到一个关键错误“在轴中找不到”
只是想知道,我的数据框是这样的:
Word Match Value1 Value2
1 Ab-art Un-ans 1.95 0.15
2 Ab-art An-ans 1.95 0.15
3 Ab-art Um-ans 1.90 0.10
4 Ab-art Tu-ort 2.15 0.35
5 Ab-drift An-klift 2.90 0.25
(...)
谢谢您的帮助。
解决方案
您可以尝试检查列中regular expression
是否有,然后您可以删除那些ab
Match
indices
正如 Jezreal 所建议的那样,更优雅的解决方案
df[~df['Match'].str.contains(r'(?i)^ab')]
旧解决方案
df.drop(df[df['Match'].str.contains(r'(?i)^ab')].index, inplace=True)
推荐阅读
- javascript - 带有反应js的paystack
- json - ASP.NET Json 没有出现
- java - 您是否能够将 pojo 事实类添加到口水的 kiebase 中?
- django - Django:使用 ajax 时是否有任何性能差异?
- laravel - 在 Laravel 查询生成器中计算多列
- microsoft-translator - 文件翻译服务的流连接器?
- crystal-reports - SAP Business Intelligence 逐表
- azure - Devops Pipelines and Releases:将一个解决方案与多个项目部署为一个 zip 文件/包
- python - 使用 Pygame 显示文本的透明度问题
- r - RStudio 退出会话后不会运行任何代码