Pandas:如何对多列使用 isin


您可以将以下方法与 pandas isin()函数结合使用,根据 pandas DataFrame 中的多列进行过滤:

方法 1:当多列等于特定值时进行过滤

 df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). all (axis= 1 )]

此特定示例会筛选 DataFrame 中团队列等于“A”位置列等于“Guard”的行。

方法 2:筛选至少一列等于特定值的位置

 df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). any (axis= 1 )]

此特定示例会筛选 DataFrame 中团队列等于“A”位置列等于“Guard”的行。

以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['Guard', 'Guard', 'Forward', 'Forward',
                                'Guard', 'Guard', 'Forward', 'Forward'],
                   ' points ': [11, 18, 10, 22, 26, 35, 19, 12]})
                   
#view DataFrame
print (df)

  team position points
0 A Guard 11
1 A Guard 18
2 A Forward 10
3 A Forward 22
4 B Guard 26
5 B Guard 35
6 B Forward 19
7 B Forward 12

示例 1:过滤多列等于特定值的情况

我们可以使用以下语法来过滤 DataFrame,使其仅包含团队列等于“A”位置列等于“Guard”的行。

 #filter rows where team column is 'A' and position column is 'Guard'
df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). all (axis= 1 )]

#view filtered DataFrame
print (df)

  team position points
0 A Guard 11
1 A Guard 18

请注意,只有团队列等于“A”位置列等于“Guard”的行才会保留在过滤后的 DataFrame 中。

示例 2:过滤其中至少一列等于特定值的情况

我们可以使用以下语法来过滤 DataFrame,使其仅包含团队列等于“A”位置列等于“Guard”的行。

 #filter rows where team column is 'A' or position column is 'Guard'
df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). any (axis= 1 )]

#view filtered DataFrame
print (df)

  team position points
0 A Guard 11
1 A Guard 18
2 A Forward 10
3 A Forward 22
4 B Guard 26
5 B Guard 35

请注意,只有团队列等于“A”位置列等于“Guard”的行才会保留在过滤后的 DataFrame 中。

注意:您可以在此处找到 pandas isin()函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

Pandas:如何向数据透视表添加过滤器
Pandas:如何过滤“不包含”
Pandas:如何过滤包含特定字符串的行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注