pandas 筛选列中是否包含有列表的值
在数据处理的过程中,我们常常需要根据某列的数值是否包含在某个列表中来对数据进行筛选和处理。在pandas中,可以使用isin()
函数来实现这一功能。本文将详细介绍如何使用isin()
函数来筛选包含指定列表值的列。
1. 创建示例数据
首先,我们创建一个包含姓名和爱好的数据集,用于演示筛选包含指定列表值的列。
import pandas as pd
data = {
'姓名': ['小明', '小红', '小刚', '小美'],
'爱好': ['篮球, 乒乓球', '画画, 篮球', '游泳, 爬山', '阅读, 游戏']
}
df = pd.DataFrame(data)
print(df)
运行结果如下:
姓名 爱好
0 小明 篮球, 乒乓球
1 小红 画画, 篮球
2 小刚 游泳, 爬山
3 小美 阅读, 游戏
2. 使用isin()
函数筛选列
接下来,我们使用isin()
函数来筛选出包含指定爱好的人员。例如,我们要筛选出喜欢篮球的人员:
interested_hobbies = ['篮球']
filtered_df = df[df['爱好'].apply(lambda x: any(hobby in x for hobby in interested_hobbies))]
print(filtered_df)
运行结果如下:
姓名 爱好
0 小明 篮球, 乒乓球
1 小红 画画, 篮球
3. 筛选出包含多个爱好的人员
如果我们想要筛选出同时喜欢篮球和画画的人员,可以修改interested_hobbies
列表,并按照相同的方式进行筛选:
interested_hobbies = ['篮球', '画画']
filtered_df = df[df['爱好'].apply(lambda x: all(hobby in x for hobby in interested_hobbies))]
print(filtered_df)
运行结果如下:
姓名 爱好
1 小红 画画, 篮球
4. 筛选出不包含指定爱好的人员
除了筛选包含指定爱好的人员外,我们也可以筛选出不包含指定爱好的人员。例如,我们筛选出不喜欢游泳和爬山的人员:
not_interested_hobbies = ['游泳', '爬山']
filtered_df = df[~df['爱好'].apply(lambda x: any(hobby in x for hobby in not_interested_hobbies))]
print(filtered_df)
运行结果如下:
姓名 爱好
0 小明 篮球, 乒乓球
1 小红 画画, 篮球
3 小美 阅读, 游戏
结论
通过以上示例,我们学会了如何使用isin()
函数来筛选包含指定列表值的列。在实际数据处理中,这一方法可以帮助我们快速准确地筛选出符合条件的数据,提高数据处理的效率。