繁体   English   中英

如何在 groupby 和 agg 语句之后访问列?

[英]How to acces columns after groupby and agg statements?

我获得的 DataFrame 每列中的每个 agg 元素都有一个列。 我想要的格式是一个有 3 列(albcircu、mean、count)而不是 5 列的表格。

我的代码是:

data = read_csv_file()
valor = data[['albcircu', 'litros']] 
valor[['albcircu', 'litros']].groupby(valor['albcircu']).agg(['count', 'mean'])

一个最小的可重现示例可能是这样的:

import pandas as pd
alb = [1800200139, 1800700023, 1800700077, 1800700119, 1800600011, 1800600091, 1800300190, 1800200054, 1802500015, 1800500078, 1800400087, 1800500035, 1800800169, 1800200002, 1800500035, 1800500060, 1800600129, 1800600182, 1802500077, 1800300179]
litros = [400, 500, 500, 452, 1000, 917, 600, 1600, 500, 400, 500, 1500, 444, 500, 500, 500, 500, 500, 500, 974]
data = pd.DataFrame({'albcircu':alb,'litros':litros})
output = data[['albcircu','litros']].groupby(data['albcircu']).agg(['count','mean'])
output #this is because in jupyter this prints the data output   

谢谢你。

由于agg操作,您在列上有一个多索引。 您可以组合它们并重命名列,如下所示。 这里的想法是 df.columns 将返回一个元组列表,因此您遍历该列表并组合元组。

df.columns = [f'{a}_{b}' for a, b in df.columns]

顺便说一句,有一种更简单的方法来执行agg操作。

data.groupby('albcircu').agg({'litros': ['count', 'mean']})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM