当特定列包含一个告诉我应删除该行的值时,如何删除Pandas数据帧中的行?

时间:2016-02-25 18:06:13

标签: python pandas

每个人都很简单,但几乎不可能在官方文档中找到基本问题的答案。

我在Pandas中有一个包含行和列的数据框对象。

其中一个名为" CBSM"的列包含布尔值。我需要从数据框中删除所有行,其中CBSM列的值=" Y"。

我看到有一种名为dataframe.drop()

的方法

Label,Axis和Level是drop()方法所接受的3个参数。我不知道提供这些参数的值是什么,以完成我以上述方式删除行的需要。我感觉drop()方法不是我想要的正确方法。

请指教,谢谢。

1 个答案:

答案 0 :(得分:0)

此方法称为boolean indexing

您可以使用loc尝试str.contains

df.loc[~df['CBSM'].str.contains('Y')] 

样品:

print df
   A CBSM  L
0  1    Y  4
1  1    N  6
2  2    N  3

print df['CBSM'].str.contains('Y')
0     True
1    False
2    False
Name: CBSM, dtype: bool

#inverted boolean serie
print ~df['CBSM'].str.contains('Y')
0    False
1     True
2     True
Name: CBSM, dtype: bool

print df.loc[~df['CBSM'].str.contains('Y')] 
   A CBSM  L
1  1    N  6
2  2    N  3

或者:

print df.loc[~(df['CBSM'] == 'Y')] 
   A CBSM  L
1  1    N  6
2  2    N  3
相关问题