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

时间:2016-02-11 11:38:27

标签: python dictionary pandas

我是一本蟒蛇字典

dict = {'Name':value,'Name2':value2,'Name3':value3}

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

df = pd.DataFrame(dict)

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

  

Name1值
  Name1值
  Name1值
  Name2值
  Name2值
  名称3值
  名称3值
  名称3值
  Name3值

而不是:

  

Name1 [value,value,value]

     

Name2 [value,value]

     

Name3 [value,value,value]

2 个答案:

答案 0 :(得分:3)

value = 1
value2 = 2
value3 = 3

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

给出

    Name    Values
0  Name2       2
1   Name       1
2  Name3       3

已修改为字典值中的列表提供支持:

如果valuevalue2value3是列表:

import pandas as pd

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

mydict = {"Name1" : value, "Name2" : value2, "Name3" : value3 }

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]

现在,我们mylist

[('Name2', 4),
 ('Name2', 5),
 ('Name2', 6),
 ('Name3', 7),
 ('Name3', 8),
 ('Name3', 9),
 ('Name1', 1),
 ('Name1', 2),
 ('Name1', 3)]

最后,转换为dataframe

df = pd.DataFrame(mylist, columns=['Name', 'Values']) 

结果是

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

答案 1 :(得分:1)

你可以试试这个:

dict1 = {'Name':1,'Name2':2,'Name3':3}
df = pd.DataFrame([[key,value] for key,value in dict1.iteritems()],
     columns=["Name","Value"])
相关问题