📜  pandas row where value in list - Python (1)

📅  最后修改于: 2023-12-03 15:18:14.101000             🧑  作者: Mango

Pandas行过滤:使用列表查找特定值

在 Pandas 中,我们通常需要根据特定条件或标准来过滤数据集中的行。有时,我们需要根据一个列表中的值来过滤行。下面是如何使用 Pandas 进行行过滤的示例,该示例使用一个列表来查找含有特定值的行。

示例数据集

让我们先创建一个示例数据集进行演示。

import pandas as pd

data = {
  'name': ['Alex', 'Bob', 'Charlie', 'Doug'],
  'age': [25, 30, 29, 27],
  'city': ['New York', 'Paris', 'London', 'Sydney']
}

df = pd.DataFrame(data)

print(df)

输出结果:

      name  age      city
0     Alex   25  New York
1      Bob   30     Paris
2  Charlie   29    London
3     Doug   27    Sydney
实现行过滤

假设我们有一个包含特定名字的列表,现在我们需要根据该列表中的值来过滤数据集。我们可以使用 Pandas 的 isin() 方法来实现该功能,具体代码如下:

names_to_filter = ['Alex', 'Charlie']

filtered_df = df[df['name'].isin(names_to_filter)]

print(filtered_df)

输出结果:

      name  age      city
0     Alex   25  New York
2  Charlie   29    London
分析

上述代码的第一行中,我们指定了一个包含要过滤的名字的列表 names_to_filter

然后,通过 df['name'].isin(names_to_filter),我们创建一个布尔(bool)Series,其中 True 表示数据集中该行的名字出现在 names_to_filter 列表中,False 表示不符合条件。我们将该 Series 应用到数据集 df 上,返回一个新的数据集变量 filtered_df,其中仅包含条件为 True 的行。

最后,我们输出过滤后的数据集 filtered_df,其中仅包含名字为 'Alex' 和 'Charlie' 的行。

总结

在 Pandas 中,我们可以使用 isin() 方法根据一个列表中的值来过滤行。该方法返回一个使用 True 或 False 对行进行标记的 Series,然后我们可以使用布尔索引(Boolean Indexing)来选择符合条件的行。