gpt4 book ai didi

python - 如何在 Pandas 中创建多索引

转载 作者:太空狗 更新时间:2023-10-29 18:28:41 29 4
gpt4 key购买 nike

问题

有两个问题看起来很相似,但它们不是同一个问题:herehere .他们都调用了 GroupBy 的方法,例如 count()aggregate(),我知道它返回一个 DataFrame。我要问的是如何将 GroupBy(class 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”(按此顺序)进行分组,这样我就可以获得一个 DataFrame,该 DataFrame 由列构造的多索引索引“name”和“take”,如下所示。

               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实例。这样做的正确方法是什么?

最佳答案

你需要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

关于python - 如何在 Pandas 中创建多索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40236436/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com