Python 按给定列中的特定值分组
给定熊猫数据帧,如下所示:Python 按给定列中的特定值分组,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,给定熊猫数据帧,如下所示: 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({'Interac
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
您可以合并数据帧本身:
# 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
您可以与一起使用。第一个melt
:
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
现在,按合作伙伴分组并求和:
df.groupby('Partner')[['Interactions']].sum()
结果:
Partner Interactions
Alice 9
Ann 3
Kate 17
Tony 11
很好的解决方案,但是最终会是:打印(join_df[['Partner1','interactionsum']])好的,你只需要选择列,检查编辑