Python 筛选具有多个值的字段

Python 筛选具有多个值的字段,python,pandas,filter,Python,Pandas,Filter,这是一个很基本的问题,如果以前有人问过但找不到答案,我会道歉 尝试根据性别筛选数据集,以便我可以看到女孩-男孩的销售分割,但数据是按标题进行的,即先生、太太、小姐和女士 我对男人有以下几点看法: men = cd.loc[cd.title_desc == "MR", "SALES"] 对于女性,我希望包括先生、太太和小姐,即 women = cd.loc[cd.title_desc == "MRS" and "MISS" and "MS", "SALES"] 但很明显,“和”是不正确的 谢谢

这是一个很基本的问题,如果以前有人问过但找不到答案,我会道歉

尝试根据性别筛选数据集,以便我可以看到女孩-男孩的销售分割,但数据是按标题进行的,即先生、太太、小姐和女士

我对男人有以下几点看法:

men = cd.loc[cd.title_desc == "MR", "SALES"]
对于女性,我希望包括先生、太太和小姐,即

women = cd.loc[cd.title_desc == "MRS" and "MISS" and "MS", "SALES"]
但很明显,“和”是不正确的


谢谢你的帮助

以前肯定有人问过这个问题,但现在你来了

要通过过滤多个值来创建两个不同的系列对象,请执行以下操作:

men = cd.loc[cd.title_desc == 'MR','SALES']
women = cd.loc[cd.title_desc.isin(['MRS','MISS','MS']), 'SALES']
或者,如果您想直接按性别列出总销售额:

cd['gender'] = ''
cd.loc[cd.title_desc == 'MR', 'gender'] = 'men'
cd.loc[cd.title_desc.isin(['MRS','MISS','MS']), 'gender'] = 'women'
cd.groupby('gender').agg({'SALES': sum})

您必须将其分解为多个逻辑语句,然后可以将其与逻辑or运算符“|”组合。生成的布尔向量可与
.loc

bvec = (cd.title_desc == "MRS") | (cd.title_desc == "MISS") | (cd.title_desc == "MS")
women = cd.loc[bvec,"SALES"]

在熊猫身上有很多方法可以做到这一点

其中最好的一个就是那个

或者,我们可以通过以下方式进行:

使用正则表达式:

cd.loc[cd.title_desc.str.contains(r'^MRS|MISS|MS$'), 'SALES']
使用
.query()
方法:

titles = ['MRS','MISS','MS']
cd.query("title_desc in @titles")['SALES']