我正在使用自定义函数进行加权平均。
就像
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
的事实,因为这可能会导致失败。
答案 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.rename
和reset_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