gpt4 book ai didi

python - 使用嵌套字典创建多索引 `Series`

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:53 24 4
gpt4 key购买 nike

在我看来,我想做的事情应该很简单,就像将其传递给构造函数一样简单,但实际上并非如此。我有一本如下的字典。

d = {"russell": {"score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)},
"cantor": {"score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)},
"godel": {"score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)}}

我想做一些类似 pandas.Series(d) 的事情,并获得一个 Series 实例,如下所示。

russell  score  0.87391482
ping 23
cantor score 0.77821932
ping 16
godel score 0.53372128
ping 35

但我实际得到的是下面的内容。

cantor     {'ping': 44, 'score': 0.007408727109865398}
godel {'ping': 41, 'score': 0.9338940910283948}
russell {'ping': 74, 'score': 0.733817307366666}

有没有办法实现我想要实现的目标?

最佳答案

我认为你需要DataFrame构造函数 unstack :

import pandas as pd
import numpy as np

d = {"russell": {"score": np.random.rand(), "ping": np.random.randint(10, 100)},
"cantor": {"score": np.random.rand(), "ping": np.random.randint(10, 100)},
"godel": {"score": np.random.rand(), "ping": np.random.randint(10, 100)}}

print (pd.DataFrame(d).unstack())

cantor ping 33.000000
score 0.240253
godel ping 64.000000
score 0.435040
russell ping 41.000000
score 0.171810
dtype: float64

此外,如果需要在 MultiIndex 中交换级别,请使用 stack :

print (pd.DataFrame(d).stack())    
ping cantor 64.000000
godel 40.000000
russell 66.000000
score cantor 0.265771
godel 0.283725
russell 0.085856
dtype: float64

关于python - 使用嵌套字典创建多索引 `Series`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40261031/

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