pandas dataframe loc 条件筛选
参考:pandas dataframe loc condition
在数据分析中,我们经常需要对数据进行筛选,以便对特定的数据进行进一步的处理和分析。在Pandas库中,我们可以使用loc
函数来根据条件进行数据筛选。本文将详细介绍如何使用loc
函数进行条件筛选。
1. 基本用法
loc
函数的基本用法是df.loc[condition]
,其中df
是一个DataFrame对象,condition
是一个布尔型的Series对象,长度与df
的行数相同。condition
中的每一个元素对应df
中的一行,如果元素的值为True
,则对应的行会被选中,否则不会被选中。
例如,我们有一个包含了一些网站的访问记录的DataFrame,我们想要筛选出访问pandasdataframe.com的记录。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
# 筛选出访问pandasdataframe.com的记录
df.loc[df['website'] == 'pandasdataframe.com']
print(df)
Output:
2. 多条件筛选
我们也可以使用多个条件进行筛选。在这种情况下,我们需要使用&
(和)和|
(或)操作符来连接多个条件。例如,我们想要筛选出访问pandasdataframe.com且访问次数超过100次的记录。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df.loc[(df['website'] == 'pandasdataframe.com') & (df['visits'] > 100)]
print(df)
Output:
注意,每个条件都需要用括号括起来,否则可能会因为运算符优先级的问题导致错误。
3. 使用函数进行筛选
我们也可以使用函数来生成筛选条件。例如,我们想要筛选出访问次数是偶数的记录。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df.loc[df['visits'].apply(lambda x: x % 2 == 0)]
print(df)
Output:
在这个例子中,我们使用了apply
函数和一个lambda函数来生成一个布尔型的Series。
4. 使用isin
函数进行筛选
isin
函数可以用来检查DataFrame的某一列是否包含在一个列表中。例如,我们想要筛选出访问pandasdataframe.com或google.com的记录。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df.loc[df['website'].isin(['pandasdataframe.com', 'google.com'])]
print(df)
Output:
5. 使用~
操作符进行反向筛选
~
操作符可以用来进行反向筛选,也就是筛选出不满足条件的记录。例如,我们想要筛选出不是访问pandasdataframe.com的记录。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df.loc[~(df['website'] == 'pandasdataframe.com')]
print(df)
Output:
6. 使用loc
函数修改数据
loc
函数不仅可以用来筛选数据,还可以用来修改数据。例如,我们想要将访问pandasdataframe.com的记录的访问次数增加1。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df.loc[df['website'] == 'pandasdataframe.com', 'visits'] += 1
print(df)
Output:
在这个例子中,我们使用了loc
函数的另一种用法df.loc[condition, column]
,其中column
是一个列名,表示要修改的列。
7. 使用loc
函数添加数据
我们也可以使用loc
函数来添加数据。例如,我们想要添加一个新的访问记录。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df.loc[len(df)] = ['pandasdataframe.com', 1]
print(df)
Output:
在这个例子中,我们使用了loc
函数的另一种用法df.loc[index] = value
,其中index
是一个索引,value
是一个值。
8. 使用loc
函数删除数据
我们也可以使用loc
函数来删除数据。例如,我们想要删除访问次数少于100次的记录。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df = df.loc[df['visits'] >= 100]
print(df)
Output:
在这个例子中,我们将筛选出的数据赋值给了原来的DataFrame,实现了删除数据的效果。
9. 使用loc
函数排序数据
我们也可以使用loc
函数来排序数据。例如,我们想要按照访问次数从大到小排序。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df = df.loc[df['visits'].sort_values(ascending=False).index]
print(df)
Output:
在这个例子中,我们先对访问次数进行了排序,然后使用排序后的索引来筛选数据,实现了排序的效果。
10. 使用loc
函数选择数据
我们也可以使用loc
函数来选择数据。例如,我们想要选择第1行和第3行的数据。
import pandas as pd
data = {
'website': ['pandasdataframe.com', 'google.com', 'pandasdataframe.com', 'bing.com'],
'visits': [100, 200, 150, 50]
}
df = pd.DataFrame(data)
df.loc[[0, 2]]
print(df)
Output:
在这个例子中,我们使用了一个列表来指定要选择的行。
总结,loc
函数是Pandas库中非常强大的一个函数,可以用来进行各种复杂的数据筛选、修改、添加、删除和排序操作。