python - 将 Python 字典 reshape 为 Pandas 数据框

标签 python pandas dictionary

我给出了一个 Python 字典,看起来像这样:

myDict = {'A':['a','b','c','d','e'],
          'B':['f','g','h']}

我想将其转换为具有以下结构的 Pandas 数据框:

  key val
0   B   f
1   B   g
2   B   h
3   A   a
4   A   b
5   A   c
6   A   d
7   A   e

我无法使用标准方法将字典输入 Pandas 数据框中,但我想出了一种可行的方法,但看起来很笨拙。基本上,我创建 2 个包含键和值的列表,转换为另一个字典并将该字典导入到 Pandas 数据框中。我确信我可以使用列表或字典理解来组合一些行,但最终的命令将不可读。我暂时将每一行分开,以便更轻松地阅读代码。

myDict = {'A':['a','b','c','d','e'],
          'B':['f','g','h']}

# Column of keys
keys = [[k]*len(v) for k,v in myDict.items()]

# Flatten list
keys = [item for sublist in keys for item in sublist]

# Column of values
values = [v for k,v in myDict.items()]

# Flatten list
values = [item for sublist in values for item in sublist]

key = 'key'
value = 'val'

df = pd.DataFrame({key:keys,value:values})

print(df)

也许我已经盯着这个太久了,但我的问题是是否有一个更简单的内置命令来实现相同的目标。

最佳答案

您可以简单地迭代字典,然后迭代每个列表:

df = pd.DataFrame(
    data=[(k, v) for k, l in myDict.items() for v in l],
    columns=['key', 'value']
)

关于python - 将 Python 字典 reshape 为 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54368318/

相关文章:

python - 如何使用 python 将特定行插入到文本文件中的另一行之前,并且不在任何行之间插入任何空行?

python - 将文件句柄传递给 cython 函数

python - Pandas - 根据条件复制行

Python - 从 CSV 创建字典的字典

javascript - 管理图像 map ,管理与区域 map 的交互

python - 如何从多对多字段中获取所有数据?

python - 在 Apache 上部署 Django 时出错

python - 计算打开和关闭时间内的时间方差

python - 使用实际数据在图上添加回归线

java - Android 地理编码器不可用?