基于列条件的Pandas数据帧过滤

时间:2017-08-15 17:42:23

标签: python pandas numpy

我正在尝试从一列中满足某个条件的数据框中删除所有行。

让我们说我的数据框是这样的:

index  'Value 1'   'Grade'
1         10         2170A
2         15         2170B
3         10         NCR2170B
4         20         NCR2170A
5         30         NCR2170B

我希望过滤后的输出为此

    index  'Value 1'   'Grade'
2         15         2170B
3         10         NCR2170B
5         30         NCR2170B

我尝试了许多使用列表理解的不同变体,循环遍历每一行并进行评估。当我使用以下内容时,我可以使它工作:

data_filtered = data[data['Grade'] == '2170B']

但这显然错过了像NCR2170B这样的条目。

每当我尝试类似的东西时:

data_filtered = data['2170B' in data['Grade']]

我得到关键错误:'正确'。

我觉得我错过了一些非常明显的东西。

我也尝试过使用np.where但它只输出一个空数组。

1 个答案:

答案 0 :(得分:1)

您可以使用str.contains检查字符串列是否包含子字符串:

df[df.Grade.str.contains('2170B')]

#index  Value 1    Grade
#1  2        15    2170B
#2  3        10 NCR2170B
#4  5        30 NCR2170B