2015-04-15 2 views
0

У меня есть база данных транзакций, содержащая три переменные: user_id/item_id/type, у одного user_id есть несколько элементов item_id и type_id, type_id находится в (1,2,3,4)pandas groupby по разному ключу и слиянию

data=DataFrame({'user_id':['a','a','a','b','b','c'],'item_id':['1','3','3','2','4','1'],'type_id':['1','2','2','3','4','4']}) 
ui=data.groupby(['user_id','item_id','type']).size() 
u=data.groupby(['user_id','type']).size() 

то, что я хочу, чтобы в конце концов получить количество каждого user_id по отчетливому tYPE_ID , а также каждый user_id, количество элемента из отчетливой tYPE_ID и сливаются затем в user_id

+0

Пожалуйста, отправьте исходные исходные данные и нужный результат, на данный момент ваш вопрос неясен. – EdChum

ответ

0

Вашего вопроса трудно ответ, но вот одно решение:

import pandas as pd 

data= pd.DataFrame({'user_id':['a','a','a','b','b','c'],'item_id':['1','3','3','2','4','1'],'type_id':['1','2','2','3','4','4']}) 

ui = data.copy() 
ui.drop('item_id',axis=1,inplace=True) 
ui = data.groupby('user_id').type_id.nunique().reset_index() 

u = data.groupby(['user_id','item_id']).type_id.nunique().reset_index() 

final = ui.merge(u,on='user_id',how='inner').set_index('user_id') 
final.columns = ['distinct_type_id','item_id','distinct_type_id'] 

print final