你好。
我有一个类似于这样的 pandas DataFrame(df):
foo id1 bar id2
0 8.0 1 NULL 1
1 5.0 1 NULL 1
2 3.0 1 NULL 1
3 4.0 1 1 2
4 7.0 1 3 2
5 9.0 1 4 3
6 5.0 1 2 3
7 7.0 1 3 1
...
我可以帮您翻译成中文。这段内容涉及编程,需要按照id1和id2进行分组,并尝试获取foo和bar的平均值。
我的代码如下:
res = df.groupby(["id1","id2"])["foo","bar"].mean()
我得到的几乎是我所期望的:
foo
id1 id2
1 1 5.750000
2 7.000000
2 1 3.500000
2 1.500000
3 1 6.000000
2 5.333333
“foo”列中的值正是我要找的平均值,但是我的“bar”列在哪里?
如果这是SQL,我需要类似以下查询结果:select avg(foo), avg(bar) from dataframe group by id1, id2;(很抱歉,我更擅长SQL,对于Pandas还不太熟悉,但我现在需要它。)
我尝试了以下替代方法:
groupedFrame = res.groupby(["id1","id2"])
aggrFrame = groupedFrame.aggregate(numpy.mean)
这给了我完全相同的结果,仍然缺少"bar"列。
我阅读的网站:
- http://wesmckinney.com/blog/groupby-fu-improvements-in-grouping-and-aggregating-data-in-pandas/
- https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.aggregate.html
- 还有关于分组的文档,但我不能在这里发布链接。
我做错了什么? - 先谢谢。