如何从字典创建两列数据框

Lui*_*uez 5 python dictionary pandas

我有一本 python 字典

dict = {'Name':value,'Name2':value2,'Name3':value3}
Run Code Online (Sandbox Code Playgroud)

我想从那里创建一个 DataFrame,但如果我尝试这个:

df = pd.DataFrame(dict)
Run Code Online (Sandbox Code Playgroud)

我有两个问题,第一个是字典中并非所有项目都具有相同的值,第二个也是更重要的一个,我想要这种格式的一两列数据框:

名1值
名称1值
名称1值
名称2值
名称2值
NAME3值
NAME3值
NAME3值
NAME3值

而不是:

名称1 [值,值,值]

名称2 [值,值]

Name3 [值,值,值]

csm*_*aiz 7

value = 1
value2 = 2
value3 = 3

mydict = {'Name':value,'Name2':value2,'Name3':value3}
df = pd.DataFrame(mydict.items(), columns=['Name', 'Values'])
Run Code Online (Sandbox Code Playgroud)

    Name    Values
0  Name2       2
1   Name       1
2  Name3       3
Run Code Online (Sandbox Code Playgroud)

编辑以支持字典值中的列表:

如果value,value2value3是列表:

import pandas as pd

value = [1,2,3]
value2 = [4,5,6]
value3 = [7,8,9]

mydict = {"Name1" : value, "Name2" : value2, "Name3" : value3 }
Run Code Online (Sandbox Code Playgroud)

mydict{'Name1': [1, 2, 3], 'Name2': [4, 5, 6], 'Name3': [7, 8, 9]}

然后,为字典中的每个值分配一个键:

mylist = [(key, x) for key,val in mydict.iteritems() for x in val]
Run Code Online (Sandbox Code Playgroud)

现在,我们有mylistIS

[('Name2', 4),
 ('Name2', 5),
 ('Name2', 6),
 ('Name3', 7),
 ('Name3', 8),
 ('Name3', 9),
 ('Name1', 1),
 ('Name1', 2),
 ('Name1', 3)]
Run Code Online (Sandbox Code Playgroud)

最后,转换为数据帧

df = pd.DataFrame(mylist, columns=['Name', 'Values']) 
Run Code Online (Sandbox Code Playgroud)

结果是

df= 

    Name  Values
0  Name2       4
1  Name2       5
2  Name2       6
3  Name3       7
4  Name3       8
5  Name3       9
6  Name1       1
7  Name1       2
8  Name1       3
Run Code Online (Sandbox Code Playgroud)