2017-06-29 65 views
1

一個基本的問題,如果以前被問過,但沒有找到答案,道歉。過濾一個有多個值的字段熊貓python

試圖基於性別過濾的數據集,這樣我可以看到這個女孩,男孩的銷售分裂,但數據是由標題即先生,太太,小姐&女士

做我的男人:

men = cd.loc[cd.title_desc == "MR", "SALES"] 

對於女性我想MR,MRS & MISS包括即

women = cd.loc[cd.title_desc == "MRS" and "MISS" and "MS", "SALES"] 

但顯然 「和」 是不正確的。

幫助感謝!

回答

2

以前肯定有過這個問題,但是在這裏你可以去。另外

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}) 
0

你必須打破它分成多個邏輯語句,然後您可以將它們與邏輯或運算符'|'結合使用。得到的布爾向量可以.loc

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

使用有相當多的方式來做到這一點的大熊貓。

其中一個最好的IMO之一@jack6e has shown in his answer

我們也可以做到這一點在以下幾個方面:

使用正則表達式的:

cd.loc[cd.title_desc.str.contains(r'^MRS|MISS|MS$'), 'SALES'] 

使用.query()方法:

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