我给了一本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数据框,但我已经想出了一个有效但看起来笨拙的方法。基本上,我创建了两个包含键和值的列表,转换为另一个dict并将该dict导入到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)

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

最佳答案

您可以使用一行代码:

pd.DataFrame.from_dict(myDict, orient='index')
    .stack()
    .reset_index()
    .drop('level_1', axis=1)
    .rename(columns={'level_0': 'key', 0: 'value'})

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

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

10-11 15:01