首页 > 解决方案 > 如何在熊猫中垂直组合两个数据集?

问题描述

我有一个循环,它生成数据帧,每个数据帧有 2 列。现在,当我尝试垂直附加数据帧(垂直堆叠)时,当我在循环中使用 pd.concat 时,代码会水平添加新的数据帧。但是,结果不会合并列(正确地具有相同的长度)。相反,它为每个循环迭代添加了 2 个新列,在 Nans 上创建了一堆。怎么解决?

df_master=pd.DataFrame()
columns=list(df_master)

data=[]
for i in range(1,3):
        --do something and return a df2 with 2 columns
        data.append(df2)
            
df_master = pd.concat(data, axis=1)
df_master.head()

如何为一个数据帧中的每次迭代压缩新的 2 列?

在此处输入图像描述

标签: pythonpandas

解决方案


如果您不需要保留原始数据框的列标签,您可以尝试在 concat 之前将每个数据框的列标签重命名为相同(例如01),例如:

df_master = pd.concat([dfi.rename({old: new for new, old in enumerate(dfi.columns)}, axis=1) for dfi in data], ignore_index=True)

演示

df1

   57  59
0   1   2
1   3   4


df2

   138  140
0   11   12
1   13   14


data = [df1, df2]

df_master = pd.concat([dfi.rename({old: new for new, old in enumerate(dfi.columns)}, axis=1) for dfi in data], ignore_index=True)


df_master

    0   1
0   1   2
1   3   4
2  11  12
3  13  14

推荐阅读