2015-10-21 2 views
1

я с этим DataframeПанды: комплекс агрегации вопрос

In [4]: df = pd.DataFrame({'person':[1,1,2,2,3,3,3, 4], 'area':['A','B','A','A', 
'C','C','C','C'], 'job type':['politics', 'expert', 'politics', 'politics', 'law 
yer','judge', 'judge', 'lawyer']}) 

In [5]: df 
Out[5]: 
    area job type person 
0 A politics  1 
1 B expert  1 
2 A politics  2 
3 A politics  2 
4 C lawyer  3 
5 C  judge  3 
6 C  judge  3 
7 C lawyer  4 

Я хотел бы для лиц, находящихся в зоне C, чтобы иметь возможность увидеть, если они были, как адвокат и судья, и вывести результат в секунду DataFrame, что-то вроде

person jobtype 
0  1 None 
1  2 None 
3  3 LAWYER_JUDGE 
4  4 None 

возможно ли это с пандами?

+0

Вы хотите группировать на основе области, а? Если да, то можете ли вы объяснить, что произойдет, если человек был юристом в одном районе и судьей в другом районе? –

+0

Нет, я хочу увеличить масштаб области C, а затем проверить, был ли кто-то адвокатом и судьей. –

+0

Я не понимаю, * увеличить *? –

ответ

2

Вот один из способов, чтобы найти людей, которые имеют как адвокат и судья

In [43]: zoomin = lambda x: None if len(np.setdiff1d(['judge', 'lawyer'], x['job type'])) else 'lawyer_judge' 

In [44]: df.groupby('person').apply(zoomin) 
Out[44]: 
person 
1   None 
2   None 
3 lawyer_judge 
4   None 
dtype: object 
+0

Спасибо, Джон работает как шарм! Могу ли я обобщить, чтобы добавить фактическое уникальное значение задания вместо None? В любом случае, спасибо? –

Смежные вопросы