将dicts列表转换为Pandas数据帧

时间:2014-04-26 18:29:32

标签: python dictionary pandas dataframe

我有一个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}) 

并希望使用它来创建具有键子集的相应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

但这非常慢(实际列表及其包含的dicts都非常大)。

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

1 个答案:

答案 0 :(得分:14)

只需将data传递给DataFrame' __init__,或传递给DataFrame.from_records(两者都可以)。

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

如果您还需要执行某些计算,则在创建它之后,DataFrame上执行此操作通常会更简单,更方便。利用熊猫!