假设我有一个具有下列值的dataframe:
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 name,然后得到(end-start)值的平均值。
我可以使用mean (df.groupby(['name'], as_index=False).mean())
但是如何给均值函数两列(倒数第一列)的减法呢?
发布于 2020-03-15 16:59:37
您可以减去列,然后按列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 70https://stackoverflow.com/questions/60691216
复制相似问题