我有一个pandas数据框,我将其分组,然后执行聚合计算以获得平均值:

grouped = df.groupby(['year_month', 'company'])
means = grouped.agg({'size':['mean']})

这给了我一个数据帧,但我似乎无法将其筛选到我想要的特定公司和年份月份:
means[(means['year_month']=='201412')]

给我一个关键错误

最佳答案

问题是您是基于'year_month''company'分组的。因此在means数据帧中,year_monthcompany将是索引(mutlindex)的一部分。访问其他列时无法访问它们。
一种方法是获取索引的'year_month'级别的值示例-

means.loc[means.index.get_level_values('year_month') == '201412']

演示-
In [38]: df
Out[38]:
   A  B   C
0  1  2  10
1  3  4  11
2  5  6  12
3  1  7  13
4  2  8  14
5  1  9  15

In [39]: means = df.groupby(['A','B']).mean()

In [40]: means
Out[40]:
      C
A B
1 2  10
  7  13
  9  15
2 8  14
3 4  11
5 6  12

In [41]: means.loc[means.index.get_level_values('A') == 1]
Out[41]:
      C
A B
1 2  10
  7  13
  9  15

关于python - 过滤 Pandas 数据框聚合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33404492/

10-12 21:58