将字典列表转换为 Pandas 数据框

Posted

技术标签:

【中文标题】将字典列表转换为 Pandas 数据框【英文标题】:Converting a list of dicts to a Pandas dataframe 【发布时间】:2014-06-12 10:56:37 【问题描述】:

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

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

但这非常慢(实际的列表和它包含的字典都非常大)。

是否有更好、更快(且更惯用)的方法来遍历字典列表并将它们作为行添加到 Pandas 数据框中?

【问题讨论】:

【参考方案1】:

只需将data 传递给DataFrame__init__DataFrame.from_records(两者都可以)。

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

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

【讨论】:

哇,from_records

以上是关于将字典列表转换为 Pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章

pandas:如何将字典转换为转置数据框? [复制]

将 Python 字典转换为 Pandas 数据框

将 pandas.DataFrame 转换为 Python 中的字典列表

将字典转换为 pandas 数据框

将 Pandas 数据框转换为字典

如何将 DataFrame 中的每一行/单元格值转换为 pandas 中的字典列表?