pandas groupby由不同的键和合并

时间:2015-04-15 08:31:35

标签: pandas

我有一个包含三个变量的事务数据main:user_id / item_id / type,一个user_id有多个item_id和type_id,type_id在(1,2,3,4)

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合并

1 个答案:

答案 0 :(得分: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