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']])好的,你只需要选择列,检查编辑