将字典转换为数据帧,其中键和值都有自己的列



我有字典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      |
+-----+--------+

这没有回答我的问题: 将值作为熊猫数据帧列表的字典

你可以试试这个:

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

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

你可以做:

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

作为替代方案,您可以使用爆炸:

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

最新更新