我有两个表,在其中一个表中,我希望对一列进行groupby,对于每个组,使用列的值过滤第二个表,然后计算唯一值。这张桌子大约有50万行
我的解决方案: 我正在使用groupby为每个组创建一个循环,其中我列出了感兴趣列的所有值,并使用该列表使用方法isin进行过滤,最后我使用方法值计数
有更好的方法吗
虚拟示例:
In [1]:
year = [2012, 2012, 2012, 2013,2013]
date = [12, 13, 14, 15, 16]
df_year = pd.DataFrame(data=list(zip(year, date)), columns=['year', 'id_event' ])
df_year
Out[1]:
year id_event
0 2012 12
1 2012 13
2 2012 14
3 2013 15
4 2013 16
In [2]:
date2 = [12, 12, 13 ,14, 15, 15, 16,20]
client = ['pepe', 'jose', 'jose', 'mara', 'mara','pepe','pepe']
df_client = pd.DataFrame(data=list(zip(date2, client)), columns=['id_event', 'client', ])
df_client
Out[2]:
id_event client
0 12 pepe
1 12 jose
2 13 jose
3 14 mara
4 15 mara
5 15 pepe
6 16 pepe
In [3]:
years = df_year.year.unique()
group_year = df_year.groupby('year')
appearances_years = {}
for i in range(len(years)):
ids = group_year.get_group(years[i]).id_event.unique()
values = df_client.loc[df_client.id_event.isin(ids)].client.value_counts().index
appearances_years[years[i]]=values
appearances_years #Number of appearances of client's in each year
Out[3]:
Index(['jose', 'pepe', 'mara'], dtype='object')
Index(['pepe', 'mara'], dtype='object')
然后我可以简单地为每年调用value\u counts
目前没有回答
相关问题 更多 >
编程相关推荐