熊猫:按功能分组并聚合

时间:2020-03-15 08:58:06

标签: python pandas

假设我有一个具有以下值的数据框:

    name     start    end     description
0    ag       20       30       None
1    bgb      21       111      'a'
2    cdd      31       101      None
3    bgb      17       19       'Bla'
4    ag       20       22       None

我想groupby命名,然后取(end-start)个值的平均值。

我可以使用meandf.groupby(['name'], as_index=False).mean()

但是如何给均值函数减去两列(最后-第一个)?

1 个答案:

答案 0 :(得分:2)

您可以减去列,然后按列df['name']进行分组:

df1 = df['end'].sub(df['start']).groupby(df['name']).mean().reset_index(name='diff')
print (df1)
 name  diff
0   ag     6
1  bgb    46
2  cdd    70

另一个带有新列diff的想法:

df1 = (df.assign(diff = df['end'].sub(df['start']))
         .groupby('name', as_index=False)['diff']
         .mean())
print (df1)
  name  diff
0   ag     6
1  bgb    46
2  cdd    70