每个人都很简单,但几乎不可能在官方文档中找到基本问题的答案。
我在Pandas中有一个包含行和列的数据框对象。
其中一个名为" CBSM"的列包含布尔值。我需要从数据框中删除所有行,其中CBSM列的值=" Y"。
我看到有一种名为dataframe.drop()
Label,Axis和Level是drop()
方法所接受的3个参数。我不知道提供这些参数的值是什么,以完成我以上述方式删除行的需要。我感觉drop()
方法不是我想要的正确方法。
请指教,谢谢。
答案 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