我如何结合两个数据框架?

我有一个初始数据框架D。我从中提取了两个数据帧,如下所示:

A = D[D.label == k]
B = D[D.label != k]

我想把AB组合成一个数据帧。数据的顺序并不重要。然而,当我们从D中对AB进行采样时,它们会保留来自D的索引。

422214 次浏览

弃用: DataFrame.appendSeries.append在1.4.0版已弃用


使用append:

df_merged = df1.append(df2, ignore_index=True)

为了保留它们的索引,设置ignore_index=False

使用pd.concat来连接多个数据帧:

df_merged = pd.concat([df1, df2], ignore_index=True, sort=False)

跨行合并:

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

跨列合并:

df_col_merged = pd.concat([df_a, df_b], axis=1)

如果你正在处理大数据,并且需要连接多个数据集,多次调用concat可能会提高性能。

如果你不想每次都创建一个新的df,你可以聚合这些变化并只调用concat一次:

frames = [df_A, df_B]  # Or perform operations on the DFs
result = pd.concat(frames)

这在部分底部的熊猫文档连接对象下指出):

但是值得注意的是,concat(因此append) 生成数据的完整副本,并不断重用此数据 函数会对性能造成很大的影响。如果你需要的话 对多个数据集的操作,使用一个列表推导式

如果你想用第二个数据帧df2的值更新/替换第一个数据帧df1的值。你可以按照以下步骤来做

步骤1:第一个数据帧的索引(df1)

df1.set_index('id')

步骤2:设置第二个数据帧的索引(df2)

df2.set_index('id')

最后使用下面的代码片段更新数据帧-

df1.update(df2)
# collect excel content into list of dataframes
data = []
for excel_file in excel_files:
data.append(pd.read_excel(excel_file, engine="openpyxl"))


# concatenate dataframes horizontally
df = pd.concat(data, axis=1)
# save combined data to excel
df.to_excel(excelAutoNamed, index=False)

当你横向追加时,你可以尝试上面的方法!希望这对sum1有所帮助

使用下面的代码水平附加两个Pandas数据帧:

df3 = pd.concat([df1, df2],axis=1, ignore_index=True, sort=False)

您必须指定围绕哪个轴合并两个帧。

要按列连接2个pandas数据帧,使用它们的索引作为连接键,你可以这样做:

both = a.join(b)

如果你想通过索引来连接多个dataframe、Series或它们的混合,只需将它们放在一个列表中,例如:

everything = a.join([b, c, d])

DataFrame.join()参见pandas文档。