根据列中的值删除行 (pandas)
Removing rows based off of a value in a column (pandas)
如果列 'Comment' 中包含 'Bad Process',我将尝试删除行值。
ID Name Comment
0 W12D0 Fine
1 W12D0 Bad Process
2 W12D0 What
3 W12D4 Fine
4 W12D5 Random
5 W12D5 Fine
.. ... ...
注意 ID 名称“W12D0”如何有 3 条评论:好的,糟糕的过程,什么。因为那个 ID 名称有 'Bad Process' 对应,所以我想删除所有出现的 W12D0。本质上我正在寻找看起来像这样的数据(带重新索引):
ID Name Comment
1 W12D4 Fine
2 W12D5 Random
3 W12D5 Fine
.. ... ...
您可以使用 .loc
获取“评论”列中具有 'Bad Process' 的所有行的 ID Name
。
然后您再次使用 .loc
,但这次用作过滤掉不良记录的掩码。 tilda (~) 是一个否定,因此它会在数据框中找到 ID 名称不在错误记录列表中的行。
bad = df.loc[df.Comment.str.contains('Bad Process'), 'ID Name']
df_good = df.loc[~df['ID Name'].isin(bad)]
>>> df_good
ID Name Comment
3 W12D4 Fine
4 W12D5 Random
5 W12D5 Fine
首先找出坏行:
bad_rows = df[df.Comment == 'Bad Process'].Name
然后从数据框中删除它们:
df[-df.Name.isin(bad_rows)]
如果列 'Comment' 中包含 'Bad Process',我将尝试删除行值。
ID Name Comment
0 W12D0 Fine
1 W12D0 Bad Process
2 W12D0 What
3 W12D4 Fine
4 W12D5 Random
5 W12D5 Fine
.. ... ...
注意 ID 名称“W12D0”如何有 3 条评论:好的,糟糕的过程,什么。因为那个 ID 名称有 'Bad Process' 对应,所以我想删除所有出现的 W12D0。本质上我正在寻找看起来像这样的数据(带重新索引):
ID Name Comment
1 W12D4 Fine
2 W12D5 Random
3 W12D5 Fine
.. ... ...
您可以使用 .loc
获取“评论”列中具有 'Bad Process' 的所有行的 ID Name
。
然后您再次使用 .loc
,但这次用作过滤掉不良记录的掩码。 tilda (~) 是一个否定,因此它会在数据框中找到 ID 名称不在错误记录列表中的行。
bad = df.loc[df.Comment.str.contains('Bad Process'), 'ID Name']
df_good = df.loc[~df['ID Name'].isin(bad)]
>>> df_good
ID Name Comment
3 W12D4 Fine
4 W12D5 Random
5 W12D5 Fine
首先找出坏行:
bad_rows = df[df.Comment == 'Bad Process'].Name
然后从数据框中删除它们:
df[-df.Name.isin(bad_rows)]