在Pandas中删除包含特定值的行有多种方法,下面一一介绍。
1. 使用布尔索引
通过使用布尔索引,可以选择符合条件的行进行删除。
例如,有如下的DataFrame:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': ['a', 'b', 'c', 'd', 'e']})
df
输出:
A B
0 1 a
1 2 b
2 3 c
3 4 d
4 5 e
现在,我们想删除B列中包含值c和e的行,可以使用布尔索引,代码如下:
df = df[~df['B'].isin(['c', 'e'])]
df
输出:
A B
0 1 a
1 2 b
3 4 d
其中,~df['B'].isin(['c', 'e'])
表示找出B列中不包含c和e的行,再通过df[~df['B'].isin(['c', 'e'])]
来选择符合条件的行进行删除。
2. 使用drop方法
另一种方法是使用drop方法,可以删除指定标签的行或列。
例如,有如下的DataFrame:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': ['a', 'b', 'c', 'd', 'e']})
df
输出:
A B
0 1 a
1 2 b
2 3 c
3 4 d
4 5 e
现在,我们想删除B列中包含值c和e的行,可以使用drop方法,代码如下:
df = df.drop(df[df.B.isin(['c', 'e'])].index)
df
输出:
A B
0 1 a
1 2 b
3 4 d
其中,df[df.B.isin(['c', 'e'])].index
表示找出B列中包含c和e的行的索引,再通过df.drop(df[df.B.isin(['c', 'e'])].index)
来删除这些行。
3. 使用query方法
还有一种方法是使用query方法,可以使用类似SQL的语法来查询符合条件的行。
例如,有如下的DataFrame:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': ['a', 'b', 'c', 'd', 'e']})
df
输出:
A B
0 1 a
1 2 b
2 3 c
3 4 d
4 5 e
现在,我们想删除B列中包含值c和e的行,可以使用query方法,代码如下:
df = df.query("B not in ['c', 'e']")
df
输出:
A B
0 1 a
1 2 b
3 4 d
其中,"B not in ['c', 'e']"
表示找出B列中不包含c和e的行,再通过df.query("B not in ['c', 'e']")
来选择符合条件的行进行删除。
以上三种方法都可以删除包含特定值的行,具体用哪种方法,取决于数据的大小和你自己的习惯。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Pandas中删除包含特定值的行 - Python技术站