熊猫:分组加权平均,如何控制输出列的名称?

时间:2018-08-08 22:14:24

标签: python pandas

我正在使用自定义函数进行加权平均。

就像

df.groupby(['group1', 'group2']).apply(weighted_average, 'val', 'wt')

返回的系列类似

group1                group2
foo                   a              8.085493
                      b             45.610411
                      c            161.959249
                      d             85.923614
                      e             30.953251
Abar                  a             24.000000
                      b             11.000000
                      c             18.723185

但是,加权平均列没有名称。如何明确命名此列?

我不想依赖为列分配名称0的事实,因为这可能会导致失败。

2 个答案:

答案 0 :(得分:3)

使用@user3483203的答案中的设置,您可以将 reset_index() name一起使用。

df = pd.DataFrame({'a': [1,1,2,2,3,3], 'b': [1,2,3,4,5,6], 'c': [1,4,3,2,1,6]})
df.groupby(['a', 'b']).c.mean().reset_index(name='avg')

输出:

   a    b   avg
0   1   1   1
1   1   2   4
2   2   3   3
3   2   4   2
4   3   5   1
5   3   6   6

答案 1 :(得分:2)

使用pd.Series.renamereset_index

df = pd.DataFrame({'a': [1,1,2,2,3,3], 'b': [1,2,3,4,5,6], 'c': [1,4,3,2,1,6]})
df.groupby(['a', 'b']).c.mean()

a  b
1  1    1
   2    4
2  3    3
   4    2
3  5    1
   6    6

使用rename

df.groupby(['a', 'b']).c.mean().rename('hello').reset_index()

   a  b  hello
0  1  1      1
1  1  2      4
2  2  3      3
3  2  4      2
4  3  5      1
5  3  6      6