2016-04-06 3 views
1

у меня есть dataframe какнайти общее значение в одном столбце против отдельного значения в другом столбце в панд

event cust 
et1 satya 
et1 papu 
et1  abc 
et1 satya 
et1  def 
et2 papu 
et2 satya 
et2 panda 
et3 normal 
et3 panda 
et3 satya 
et3  fgh 

Теперь мне нужно Findout «корка», которые существуют для всех 3 типов events.so это должно дать

event cust 
et1 satya 
et1 satya 

Не беспокойтесь о различиях (дубликаты можно отбросить). Для этого моего подхода является

x = df[df['event'] == 'et1'] 
y = df[df['event'] == 'et2'] 
z = df[df['event'] == 'et3'] 
df_common = x[x['cust'].isin(y[y['cust'].isin(z.cust)]['cust'])] 

Но это не будет уместно в том случае, когда размер DataFrame будет огромным, и я должен найти общую корку для некоторых 50-100 + событий.

Пожалуйста, предложите несколько pandas/more-pythonic способ сделать это. Спасибо заранее.

ответ

1

Вы можете попробовать:

#first drop duplicates in each group by event 
df = df.drop_duplicates(['event','cust']) 

#count values 
counts = df.cust.value_counts() 
print counts 
satya  3 
panda  2 
papu  2 
def  1 
normal 1 
fgh  1 
abc  1 
Name: cust, dtype: int64 

#get number of unique events 
uniqevents = df.event.nunique() 
print uniqevents 
3 
#get values with count == uniqevents 
counts = counts[counts == uniqevents] 
print counts 
satya 3 
Name: cust, dtype: int64 

print counts.index.to_series().reset_index(drop=True) 
0 satya 
dtype: object 
+0

@ jezrael-Fine в случае (общий для всех события) .Но как насчет --Если я хочу каст, которые в некоторых выбранных events.Like получить общее корка для события et1 & et2 (исключая et3). – Satya

+0

Хорошо. получилось, что я должен сначала отфильтровать свой DataFrame. df = df [df ['events']. isin (['et1', 'et2'])] Затем я могу следовать вашему подходу. Просто интересно, существует ли какая-либо функция панды (если таковая имеется) для этого? – Satya

+0

Да, я хочу написать нечто похожее, как 'isin'. Я не знаю, как это работает. Я стараюсь 'groupby' и' apply', но безуспешно. – jezrael

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

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