列表的字典中的DataFrame,其中列值为键

时间:2018-06-21 21:46:02

标签: python python-3.x pandas

假设我们有以下字典:

things = {'George':['cat','kitty'], 'Stackoverflow':['questions','answers'], 'hungry':['im','always']}

一个人可以轻松地将其转换为包含[[key1,value1]...[keyX,valueX]]的列表,并将其转换为如下所示的数据框:(此处忽略了索引和列名)

George          cat 
George          kitty
Stackoverflow   questions 
Stackoverflow   answers
hungry          im
hungry          always

但是,这有可能直接来自字典吗?

2 个答案:

答案 0 :(得分:2)

您可以使用from_dict.stack进行此操作:

pd.DataFrame.from_dict(things, orient='index').stack().reset_index(level=0)

         level_0          0
0         George        cat
1         George      kitty
2  Stackoverflow  questions
3  Stackoverflow    answers
4         hungry         im
5         hungry     always

答案 1 :(得分:2)

只需使用melt

pd.DataFrame(things).melt()

        variable      value
0         George        cat
1         George      kitty
2  Stackoverflow  questions
3  Stackoverflow    answers
4         hungry         im
5         hungry     always

如果要在此处使用列名,只需使用 var_name value_name 标志:

pd.DataFrame(things).melt(var_name='foo', value_name='bar')