代码之家  ›  专栏  ›  技术社区  ›  alukard990

从作为字典值的其他pandas数据帧中附加pandas数据框

  •  1
  • alukard990  · 技术社区  · 4 年前

    我有一个有N对(键、值)的字典,其中N是未知的;每个值都是一个pandas数据帧,其中包含一组不同的列。例如:

    d = {'DF1': pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c']),
    'DF2': pd.DataFrame(np.array([[10, 11 ,12], [13, 14, 15]]),columns=['d', 'e'])}
    

    我会将字典中包含的所有数据帧附加到第三个空数据帧中,因为我必须将字典的所有数据框保存到拼花文件中。但如果我使用以下代码行,则df3中没有数据帧:

    df3 = pd.Dataframe()
    for key in d: 
        df3.append(d[key], ignore_index=True)
    

    如何将所有数据帧附加到df3中?

    更新1:字典中的所有数据帧可能都有公共列

    1 回复  |  直到 4 年前
        1
  •  1
  •   Georgina Skibinski    4 年前

    尝试:

    v=list(d.values())
    df3=v[0]
    for el in v[1:]:
        df3=pd.concat([df3,el])
    df3=df3.reset_index(drop=True)
    

    或者更简单,根据您的评论:

    df3 = pd.concat(d.values(), axis=0).reset_index(drop=True)
    
        2
  •  1
  •   gellerm    4 年前

    我认为更好的方法是使用for循环来连接数据帧,即。 pd.concat 。以下是如何使用该函数的文档链接: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html 。这样做的目的是确保您沿右轴(0或1)追加!