📅  最后修改于: 2023-12-03 15:40:28.083000             🧑  作者: Mango
在数据分析中,我们经常需要从数据集中按照某些条件去筛选我们需要的数据。在Python的pandas库中,我们可以使用Boolean Indexing和loc方法来完成这一操作。
Boolean Indexing是一种利用布尔值来进行筛选的方法。我们首先需要按照条件生成一个布尔数组,然后将其传入数据集中即可。
例如,我们有如下数据集:
import pandas as pd
data = {'name': ['Mike', 'Sarah', 'Joe', 'Bob', 'Lisa'],
'age': [25, 28, 22, 24, 27],
'gender': ['M', 'F', 'M', 'M', 'F'],
'married': [False, True, False, False, False]}
df = pd.DataFrame(data)
我们想要筛选出年龄大于等于25岁的人,可以使用以下代码:
filter = df['age'] >= 25
df_filtered = df[filter]
这里,我们首先生成了一个布尔数组filter,它的每个元素都是True或False。接着,我们将布尔数组传入数据集中,得到一个新的数据集df_filtered。其中,只有对应位置为True的元素才会被保留下来。
除了Boolean Indexing,我们还可以使用pandas的loc方法。这一方法可以根据标签来选择数据。
例如,我们有如下数据集:
import pandas as pd
data = {'name': ['Mike', 'Sarah', 'Joe', 'Bob', 'Lisa'],
'age': [25, 28, 22, 24, 27],
'gender': ['M', 'F', 'M', 'M', 'F'],
'married': [False, True, False, False, False]}
df = pd.DataFrame(data)
df.set_index('name', inplace=True)
我们想要筛选出年龄大于等于25岁的人,可以使用以下代码:
df_filtered = df.loc[df['age'] >= 25]
这里,我们使用了loc方法,并且传入了一个布尔数组df['age'] >= 25作为行索引。loc方法会返回一个新的数据集df_filtered,其中只有年龄大于等于25岁的数据被保留下来。
无论是Boolean Indexing还是loc方法,它们都可以用来根据条件切片数据框。Boolean Indexing需要使用布尔数组来完成,而loc方法则可以使用标签。在使用时,我们需要根据情况选择合适的方法。