假设我有一个具有以下值的数据框:
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
)个值的平均值。
我可以使用mean
(df.groupby(['name'], as_index=False).mean()
)
但是如何给均值函数减去两列(最后-第一个)?
答案 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