首页 > 解决方案 > 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
(...)

谢谢您的帮助。

标签: pythonpandas

解决方案


您可以尝试检查列中regular expression是否有,然后您可以删除那些abMatchindices

正如 Jezreal 所建议的那样,更优雅的解决方案

df[~df['Match'].str.contains(r'(?i)^ab')]

旧解决方案

df.drop(df[df['Match'].str.contains(r'(?i)^ab')].index, inplace=True)

推荐阅读