如何合并两个数据框?
- 2025-01-09 08:47:00
- admin 原创
- 112
问题描述:
我有一个初始数据框D
。我从中提取两个数据框,如下所示:
A = D[D.label == k]
B = D[D.label != k]
我想将A
和B
合并为一个 DataFrame。数据的顺序并不重要。但是,当我们从中采样A
和B
时D
,它们会保留来自的索引D
。
解决方案 1:
已弃用: 在 v1.4.0 中
DataFrame.append
已Series.append
被弃用。
使用append
:
df_merged = df1.append(df2, ignore_index=True)
为了保留其索引,请设置ignore_index=False
。
解决方案 2:
用于pd.concat
连接多个数据框:
df_merged = pd.concat([df1, df2], ignore_index=True, sort=False)
解决方案 3:
跨行合并:
df_row_merged = pd.concat([df_a, df_b], ignore_index=True)
跨列合并:
df_col_merged = pd.concat([df_a, df_b], axis=1)
解决方案 4:
如果您正在处理大数据并且需要连接多个数据集,concat
则多次调用可能会影响性能。
如果您不想每次都创建一个新的 df,您可以汇总更改并concat
只调用一次:
frames = [df_A, df_B] # Or perform operations on the DFs
result = pd.concat(frames)
本节底部的连接对象下的 pandas 文档中指出了这一点):
注意:但值得注意的是,
concat
(因此append
)会复制完整的数据,并且不断重复使用此函数可能会严重影响性能。如果您需要对多个数据集使用该操作,请使用列表推导。
解决方案 5:
如果要用第二个数据df1
框的值更新/替换第一个数据框的值df2
,可以按照以下步骤进行操作 -
步骤 1:设置第一个数据框(df1)的索引
df1.set_index('id')
步骤 2:设置第二个数据框(df2)的索引
df2.set_index('id')
最后使用以下代码片段更新数据框——
df1.update(df2)
解决方案 6:
要按列连接 2 个 pandas 数据框,并使用它们的索引作为连接键,您可以执行以下操作:
both = a.join(b)
如果你想通过索引连接多个 DataFrames、Series 或它们的混合,只需将它们放在列表中,例如:
everything = a.join([b, c, d])
请参阅 pandas 文档DataFrame.join()
。
解决方案 7:
两个数据框都应该具有相同的列名,否则它将作为单独的列附加,而不是按行附加记录。
df = df.append(df1,ignore_index=True)
df = pd.concat([df1,df2], ignore_index=True)
解决方案 8:
# 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 有帮助
解决方案 9:
使用此代码水平连接两个 Pandas 数据框:
df3 = pd.concat([df1, df2],axis=1, ignore_index=True, sort=False)
您必须指定要围绕哪个轴合并两个框架。
扫码咨询,免费领取项目管理大礼包!