有两个问题看似相似,但问题不同: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"并且"采取" (按此顺序),这样我就可以得到一个DataFrame
索引,该索引由列#34; name"构成的多索引索引。和"采取",如下所示。
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
个实例。如何将grouped
转换为DataFrame
个实例?
答案 0 :(得分:10)
您需要set_index
:
data = data.set_index(['name','take'])
print (data)
ping score
name take
sasha one 46 0.509177
two 77 0.828984
asa one 51 0.637451
two 51 0.658616