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 中执行其他常见任务: