我有一个类似于以下示例的数据框:
year x y
2016 o 227
2018 o 214
2016 o 56
2018 o 62
2018 o 87
2019 o 40
2017 r 15
2016 i 14
2016 o 88
2014 o 48
我想得到一个输出,其中平均 y 是根据一年中的grouby
计算出来的,然后是x
。像这样:
year x y
2016 o (227 + 56 + 88)/3 = 123.66 = 124 (Need just the final value)
2018 o (214 + 62 + 87)/3 = 121 (Need just the final value)
2019 o 40
2017 r 15
2016 i 14
2014 o 48
我认为我找到了一种方法(但是我可能错了),但是结果出在非数据帧中:
print(part_b[['year', 'x', 'y']].groupby(['year', 'x']).mean())
生成的输出:(以下输出的结果来自我的整个数据)
y
year x
2014 o 48.000000
2016 i 14.000000
o 117.000000
2017 o 71.000000
r 27.500000
2018 i 23.000000
o 97.428571
2019 i 11.000000
o 115.500000
'''
Whereas I would like to have this:
```python
year x y
2014 o 48
2016 i 14
2016 o 117
2017 o 71
2017 r 28
2018 i 23
2018 o 97
2019 i 11
2019 o 116
'''
答案 0 :(得分:1)
为此:
year category amount
0 2015 A 200
1 2015 B 1000
2 2015 A 300
3 2016 C 1200
4 2016 A 800
5 2016 A 2500
6 2016 B 100
这样做:
df.groupby(['year','category'])['amount'].mean()
会给您:
year category
2015 A 250
B 1000
2016 A 1650
B 100
C 1200
Name: amount, dtype: int64
要实现所需的功能,只需执行以下操作:
df.groupby(['year','category'])['amount'].mean().reset_index()
year category amount
0 2015 A 250
1 2015 B 1000
2 2016 A 1650
3 2016 B 100
4 2016 C 1200