将字典转换为数据框,其中键和值各自具有自己的列

时间:2019-11-22 01:22:20

标签: python pandas dataframe dictionary

我有字典d:

d = dict({'foo': ['a', 'b', 'c'], 'bar': ['d', 'e', 'f']})

我如何获得一个看起来像这样的数据框:

+-----+--------+
| Key | Values |
+-----+--------+
| foo | a      |
+-----+--------+
| foo | b      |
+-----+--------+
| foo | c      |
+-----+--------+
| bar | d      |
+-----+--------+
| bar | e      |
+-----+--------+
| bar | f      |
+-----+--------+

这不能回答我的问题: Dictionary with values as lists to pandas dataframe frame

3 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

df = pd.DataFrame(d).stack().sort_values()

df
#Out[2037]: 
#0  foo    a
#1  foo    b
#2  foo    c
#0  bar    d
#1  bar    e
#2  bar    f

答案 1 :(得分:1)

pandas 0.25之后

pd.Series(d).explode().reset_index()
Out[114]: 
  index  0
0   foo  a
1   foo  b
2   foo  c
3   bar  d
4   bar  e
5   bar  f

答案 2 :(得分:0)

您可以这样做:

import pandas as pd

d = {'foo': ['a', 'b', 'c'], 'bar': ['d', 'e', 'f']}

df = pd.DataFrame([[key, value] for key, values in d.items() for value in values], columns=['keys', 'values'])
print(df)

输出

  keys values
0  foo      a
1  foo      b
2  foo      c
3  bar      d
4  bar      e
5  bar      f

您也可以使用explode

df = pd.DataFrame({'keys': list(d.keys()), 'values': list(d.values())}).explode('values').reset_index(drop=True)
print(df)

输出

  keys values
0  foo      a
1  foo      b
2  foo      c
3  bar      d
4  bar      e
5  bar      f