2014-04-26 155 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