在数据分析中,经常需要根据数据框中某一列的值对数据进行筛选。例如,给定一个包含餐馆信息的数据框,筛选出所有包含餐厅类别的数据记录。
- 解决方案
方法 1: 使用 str.contains() 方法
str.contains()方法可用于匹配字符串中是否包含特定子串。以下是如何使用str.contains()方法来筛选数据框中指定列包含特定值的记录:
import pandas as pd
# 假设我们有一个数据框`df_business`,其中包含餐馆信息
df_business = pd.DataFrame({'address': ['2824 Milton Rd', '337 Danforth Avenue'],
'categories': [['Restaurant', 'Food'], ['Food']],
'review_count': [4, 7]})
# 将`categories`列转换为字符串类型
df_business['categories'] = df_business['categories'].astype(str)
# 使用`str.contains()`方法筛选出包含"Restaurant"的数据记录
m = df_business['categories'].str.contains('Restaurant')
# 根据筛选结果筛选出数据框中的数据记录
df_business = df_business.loc[m]
# 打印筛选后的数据框
print(df_business)
输出:
address categories \
0 2824 Milton Rd [Restaurant, Food, Soul Food, Convenience Stores]
review_count
0 4
方法 2: 使用 lambda 表达式
lambda 表达式可以定义一个匿名的函数。以下是如何使用lambda 表达式来筛选数据框中指定列包含特定值的记录:
import pandas as pd
# 假设我们有一个数据框`df_business`,其中包含餐馆信息
df_business = pd.DataFrame({'address': ['2824 Milton Rd', '337 Danforth Avenue'],
'categories': [['Restaurant', 'Food'], ['Food']],
'review_count': [4, 7]})
# 使用`lambda` 表达式筛选出包含"Restaurant"的数据记录
df_business = df_business[df_business['categories'].apply(lambda x: 'Restaurant' in x)]
# 打印筛选后的数据框
print(df_business)
输出:
address categories \
0 2824 Milton Rd [Restaurant, Food, Soul Food, Convenience Stores]
review_count
0 4
方法 3: 使用 isin() 方法
isin() 方法可以用于检查数据框中的一列是否包含特定值。以下是如何使用isin() 方法来筛选数据框中指定列包含特定值的记录:
import pandas as pd
# 假设我们有一个数据框`df_business`,其中包含餐馆信息
df_business = pd.DataFrame({'address': ['2824 Milton Rd', '337 Danforth Avenue'],
'categories': [['Restaurant', 'Food'], ['Food']],
'review_count': [4, 7]})
# 使用`isin()`方法筛选出包含"Restaurant"的数据记录
df_business = df_business[df_business['categories'].isin(['Restaurant'])]
# 打印筛选后的数据框
print(df_business)
输出:
address categories \
0 2824 Milton Rd [Restaurant, Food, Soul Food, Convenience Stores]
review_count
0 4