如何将一个包含键和值的字典转换为一个Pandas数据框,其中一列是键,另一列是值?

e4yzc0pl  于 2023-04-19  发布在  其他
关注(0)|答案(3)|浏览(121)

此问题已在此处有答案

Reshape wide to long in pandas(3个答案)
4天前关闭。
我有这本字典:

data = {'key1': [2, 6, 7], 
        'key2': [9, 5, 3]}

我怎么把它转换成这个pandas Dataframe

key   value
0  key1  2
1  key1  6
2  key1  7
3  key2  9
4  key2  5
5  key2  3


我试过:

import pandas  as pd
data = {'key1': [2, 6, 7], 'key2': [9, 5, 3]}
df = pd.DataFrame(data.items())
print(df)

但它返回:

0          1
0  key1  [2, 6, 7]
1  key2  [9, 5, 3]

我也试过:

import pandas  as pd
data = {'key1': [2, 6, 7], 'key2': [9, 5, 3]}
df = pd.DataFrame.from_dict(data)
print(df)

但它返回:

key1  key2
0     2     9
1     6     5
2     7     3
sr4lhrrt

sr4lhrrt1#

也可以使用pd.melt()

df = df.melt(var_name="key", value_name="value")
key  value
0  key1      2
1  key1      6
2  key1      7
3  key2      9
4  key2      5
5  key2      3
i1icjdpr

i1icjdpr2#

更新

一个更pythonic的方法:

>>> pd.DataFrame([(k, v) for k, l in data.items() for v in l],
                 columns=['key', 'value'])
    key  value
0  key1      2
1  key1      6
2  key1      7
3  key2      9
4  key2      5
5  key2      3

pd.Series的一种方式:

>>> pd.Series(data, name='value').explode().rename_axis('key').reset_index()
    key value
0  key1     2
1  key1     6
2  key1     7
3  key2     9
4  key2     5
5  key2     3
bttbmeg0

bttbmeg03#

你可以在下面的代码后使用explode()

import pandas  as pd
data = {'key1': [2, 6, 7], 'key2': [9, 5, 3]}
df = pd.DataFrame(data.items())
df = df.explode(column=1)

df输出

0  1
0  key1  2
0  key1  6
0  key1  7
1  key2  9
1  key2  5
1  key2  3

相关问题