有两个问题看似相似,但它们不是同一个问题:这里和这里.它们都调用了一种方法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)
Run Code Online (Sandbox Code Playgroud)
上面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
Run Code Online (Sandbox Code Playgroud)
我想要做的是按"name"和"take"(DataFrame按此顺序)列进行分组,这样我就可以通过从"name"和"take"列构造的multiindex 进行索引,如下所示.
score ping
name take
sasha one 0.923263 72
two 0.724720 14
asa one 0.774320 76
two 0.128721 71
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?如果我这样做grouped = data.groupby(["name", "take"]),那么grouped就是一个pandas.core.groupby.DataFrameGroupBy实例.如何转换GroupBy为count()实例?
jez*_*ael 12
你需要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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13932 次 |
| 最近记录: |