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

标签 python pandas dictionary nested series

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

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/

相关文章:

Python BigQuery API - 获取表架构/表头

python - 迭代和连接 2 个列表占用大量内存

python - Dask groupby apply 行为异常

python - Pandas 从两个表创建新表

python - 对于带有 pytest-cov : how to specify parallel=True for coverage version >= 5 的 pytest

python - 如何使用 matplotlib 和 python 绘制和保存单独的图

vb.net - 带有两个键的字典条目 - VB.net

python - 全局字典不需要关键字 global 来修改它们吗?

python - 判断两个字典是否导致循环

python - 带有 ssh 隧道的 django db