【发布时间】:2017-07-10 03:50:24
【问题描述】:
我有一个关于熊猫数据框的问题:
我有一个如下的数据框,
df = pd.DataFrame([[1,1,10],[1,1,30],[1,2,40],[2,3,50],[2,3,150],[2,4,100]],columns=["a","b","c"])
a b c
0 1 1 10
1 1 1 30
2 1 2 40
3 2 3 50
4 2 3 150
5 2 4 100
我想产生以下输出,
a "new col"
0 1 30
1 2 100
其中第一行计算如下:
- 按第一列“a”对 df 进行分组,
- 然后将每个分组的对象分组为“b”
- 计算该 b 组“c”的平均值
- 计算一个“a”的所有 b-groupb 的均值
- 这是一个“a”存储在“new col”中的最终值
我可以想象这有点令人困惑,但我希望这是可以理解的。
我达到了预期的结果,但由于我需要它来处理一个巨大的数据帧,我的解决方案可能会很慢,
pd.DataFrame([ [a, adata.groupby("b").agg({"c": lambda x:x.mean()}).mean()[0]] for a,adata in df.groupby("a") ],columns=["a","new col"])
a new col
0 1 30.0
1 2 100.0
因此,我需要的是(?) df.groupby("a").groupby("b")["c"].mean()
非常感谢您!
【问题讨论】: