Skip to main content
 首页 » 编程设计

python之如何从数据框字典创建 Pandas DataFrame

2025年05月04日21shangdawei

我有一个字典,它是具有所有相同列和数据结构的数据帧列表。我想再次将所有这些“合并”到一个数据框中,其中字典键被转换成另一列:df_list{}

{'A' : col1 col2 col3 \ 
001    val1  val2  val3 
002    val3  val4  val5 
 
'B' : col1 col2 col3 \ 
001    val1  val2  val3 
002    val3  val4  val5 

...等等

但我想要:

key  Col1  Col2  Col3 
A    val1  val2  val3 
A    val4  val5  val6 
B    val1  val2  val3 
B    val4  val5  val6 

我尝试使用 pd.DataFrame.from_dict() 但要么我没有正确使用它,要么我需要其他东西..

final_df = pd.DataFrame.from_dict(df_list) 

但得到:ValueError:如果使用所有标量值,则必须传递一个索引

当我尝试传递索引时,我得到了一列而不是数据框。

请您参考如下方法:

应该这样做:

import pandas as pd 
 
df1 = pd.DataFrame({ 
    "col1":['val1','val3'], 
    "col2":['val2','val3'], 
    "col3":['val3','val5'] 
}) 
 
 
df2 = pd.DataFrame({ 
    "col1":['val7','val3'], 
    "col2":['val2','val3'], 
    "col3":['val3','val5'] 
}) 
 
pd_dct = {"A": df1, "B": df2} 
 
# adding the key in  
for key in pd_dct.keys(): 
    pd_dct[key]['key'] = key  
 
# concatenating the DataFrames 
df = pd.concat(pd_dct.values()) 

或者,我们也可以在一行中执行此操作:

pd.concat(pd_dct, axis=0).reset_index(level=0).rename({'level_0':'key'}, axis=1)