[英]Groupby Column in Pandas and Perform calculation (Python)
我有一个数据集 df,我想在其中:
df1
date name rack TotalB freeB
11/20/2020 a yes 11 5
11/20/2020 a yes 10 5
11/20/2020 a yes 12 5
11/20/2020 a yes 10 5
11/20/2020 b no 5 2
11/20/2020 b no 5 2
11/20/2020 b no 6 2
期望的结果
date name rack TotalB freeB UsedB
11/20/2020 a yes 10.75 5 5.75
11/20/2020 b no 5.33 2 3.33
我在做什么:
df.groupby('rack')['TotalB'].mean()
UsedB = df["TotalB"] - df["freeB"]
我在保留数据集中的所有列时遇到问题。 任何建议表示赞赏。
从这个问题来看,您似乎想要执行以下操作:
df = df1.groupby(['date', 'name', 'rack'], as_index=False).agg({'TotalB': 'mean', 'freeB': 'mean})
它将按前 3 列分组,并找到最后 2 列的平均值,然后是
df['UsedB'] = df.TotalB - df.freeB
Groupby 相似列,计算平均值然后分配 UsedB
df.groupby(['date', 'name', 'rack', 'freeB']).agg({'TotalB': 'mean'}).reset_index().assign(UsedB=lambda x: x['TotalB'] - x['freeB'])
date name rack freeB TotalB UsedB
0 11/20/2020 a yes 5 10.750000 5.750000
1 11/20/2020 b no 2 5.333333 3.333333
您还可以使用as_index=False
选项:
df.groupby(["date", "name", "rack"], as_index=False).mean().assign(
UsedB=lambda x: x.TotalB - x.freeB
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.