2017-02-14 101 views
2

拿字典:大熊貓:從字典中創建一個數據幀

dict = {'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'} 

我怎麼拿這本字典,把它變成一個數據幀,其中值是列?即我想要一個數據幀顯示:

ham chicken beef 
0 a  c  d 
1 b  e  

似乎無法得到它的這種形式!

感謝

這是一個不同的問題,另一種是簡單地詢問如何買到字典的值轉換爲數據幀,我詢問如何獲取特定形式我概述

+4

這是一個不同的問題我不知道爲什麼這被標記爲重複 – user33484

+1

命令是否重要?您可能需要將其轉換爲記錄形式的某種有序數據。 –

回答

2

的一點點轉換「魔術」:

import pandas as pd 

d = {'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'} 

new_dict = dict() 
for key in d: 
    col = d[key] 
    try: 
     new_dict[col].append(key) 
    except: 
     new_dict[col] = [key] 

df = pd.DataFrame.from_dict(new_dict, orient='index').transpose() 
print(df) 

# chicken ham beef 
# 0  c a  d 
# 1  e b None 

首先,走過你原來的字典和一個叫做new_dict新字典創建列表。從這一個電話from_dict()orient='index'

2

我看到揚剛剛發佈了一個很好的答案,但我想表明,你也可以使用defaultdict和列表解析來做到這一點。

import pandas as pd 
from collections import defaultdict 

dict1 = {'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'} 

# Set the default as an empty list to store multiple strings with an order 
reversed_dict = defaultdict(list) 

# Reverse the key-value pairs 
for k, v in dict1.items(): 
    reversed_dict[v].append(k) 

# Convert each list to a Series and make the dataframe 
pd.DataFrame(dict([(k, pd.Series(v)) for k, v in reversed_dict.items()])) 

# beef chicken ham 
# 0 d  c a 
# 1 NaN  e b