【发布时间】:2017-03-07 07:03:51
【问题描述】:
问题
有两个问题看起来相似,但它们不是同一个问题:here 和 here。它们都调用GroupBy 的方法,例如count() 或aggregate(),我知道它返回DataFrame。我要问的是如何将GroupBy(pandas.core.groupby.DataFrameGroupBy 类)对象本身转换为DataFrame。下面我会举例说明。
示例
如下构造示例DataFrame。
data_list = []
for name in ["sasha", "asa"]:
for take in ["one", "two"]:
row = {"name": name, "take": take, "score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)}
data_list.append(row)
data = pandas.DataFrame(data_list)
上面的DataFrame 应该如下所示(显然数字不同)。
name ping score take
0 sasha 72 0.923263 one
1 sasha 14 0.724720 two
2 asa 76 0.774320 one
3 asa 71 0.128721 two
我想要做的是按列“name”和“take”(按此顺序)分组,这样我就可以获得由“name”和“take”列构建的多索引索引的DataFrame ",如下所示。
score ping
name take
sasha one 0.923263 72
two 0.724720 14
asa one 0.774320 76
two 0.128721 71
我如何做到这一点?如果我做grouped = data.groupby(["name", "take"]),那么grouped 就是pandas.core.groupby.DataFrameGroupBy 实例。这样做的正确方法是什么?
【问题讨论】: