如何解决熊猫通过给定列中的任何特定值分组
给出如下熊猫数据框:
Partner1 Partner2 Interactions
0 Ann Alice 1
1 Alice Kate 8
2 Kate Tony 9
3 Tony Ann 2
我怎样才能按特定的合作伙伴分组,比如说要查找与Ann互动的总数?
类似
gb = df.groupby(['Partner1'] or ['Partner2']).agg({'Interactions': 'sum'})
并获得答案:
Partner Interactions
Ann 3
Alice 9
Kate 17
Tony 11
解决方法
df = pd.melt(df,id_vars='Interactions',value_vars=['Partner1','Partner2'],value_name='Partner')
这将给出:
Interactions variable Partner
0 1 Partner1 Ann
1 8 Partner1 Alice
2 9 Partner1 Kate
3 2 Partner1 Tony
4 1 Partner2 Alice
5 8 Partner2 Kate
6 9 Partner2 Tony
7 2 Partner2 Ann
现在,按Partner
分组并求和:
df.groupby('Partner')[['Interactions']].sum()
结果:
Partner Interactions
Alice 9
Ann 3
Kate 17
Tony 11
,
您可以合并数据框本身:
# join the df to itself
join_df = df.merge(df,left_on='Partner1',right_on='Partner2',suffixes=('','_'))
# get sum
join_df['InteractionsSum'] = join_df[['Interactions','Interactions_']].agg(sum,1)
join_df = join_df[['Partner1','Interactions']].copy()
print(join_df)
Partner1 Interactions
0 Ann 1
1 Alice 8
2 Kate 9
3 Tony 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。