2014-04-26 190 views
8

我的Python的dict s各自相同的按鍵列表,轉換類型的字典列表的熊貓數據幀

dict_keys= ['k1','k2','k3','k4','k5','k6'] # More like 30 keys in practice 
data = [] 
for i in range(20): # More like 3000 in practice 
    data.append({k: np.random.randint(100) for k in dict_keys}) 

,並想用它來創建相應的熊貓數據框用的一個子集鍵。我目前的做法是採取從列表中各一個dict的時間和使用

df = pd.DataFrame(columns=['k1','k2','k5','k6']) 
for d in data: 
    df = df.append({k: d[k] for k in list(df.columns)}, ignore_index=True) 
    # In practice, there are some calculations on some of the values here 

追加到數據幀,但是這是很慢(實際列表,它包含的類型的字典,都是相當大)。

是否有更好,更快(更自然)的方法來迭代詞典列表並將它們作爲行添加到Pandas數據框中?

回答

12

簡單地通過dataDataFrame__init__,或DataFrame.from_records(要麼工作)。

您可能還想設置索引,例如DataFrame.from_records(data, index = 'k1')

如果您還需要執行一些計算,那麼在創建它之後,在DataFrame上執行該操作通常更容易和更方便。利用熊貓!

+1

哇,'from_records'是*快* *! – orome