【问题标题】:How to create a Pandas DataFrame from dictionary of dataframes?如何从数据框字典创建 Pandas 数据框?
【发布时间】:2021-03-01 17:42:55
【问题描述】:

我有一个字典,它是具有所有相同列和数据结构的数据框列表。我想基本上将所有这些“联合”到一个数据帧中,其中字典键被转换为另一列: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: If using all scalar values, you must pass an index

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

【问题讨论】:

  • pd.concat(df_dict, axis=0).reset_index() 呢?
  • 哇,它做到了!

标签: python pandas dataframe


【解决方案1】:

应该这样做:

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)

【讨论】:

    猜你喜欢
    • 2017-07-03
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2016-10-22
    • 2020-05-10
    相关资源
    最近更新 更多