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']