将dicts列表转换为Pandas数据帧

oro*_*ome 8 python dictionary dataframe pandas

我有一个Python列表,dict每个都有相同的键,

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}) 
Run Code Online (Sandbox Code Playgroud)

并希望用它来创建一个带有密钥子集的相应Pandas数据帧.我目前的方法是一次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
Run Code Online (Sandbox Code Playgroud)

但这非常慢(实际列表,它包含的词组,都非常大).

是否有更好,更快(更惯用)的方法来迭代字典列表并将它们作为行添加到Pandas数据帧中?

shx*_*hx2 14

简单地传递dataDataFrame's __init__,或者DataFrame.from_records(或者可以工作).

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

如果您还需要执行一些计算DataFrame,在创建它之后,通常更容易也更方便.利用熊猫!