169

我正在使用熊猫数据框。我有一个初始数据框,比如说D。我像这样从中提取两个数据框:

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

我想合并AB所以我可以将它们作为一个 DataFrame,类似于联合操作。数据的顺序并不重要。但是,当我们从中采样时A,它们会保留从 中的索引。BDD

4

5 回答 5

218

弃用通知DataFrame.append在 v1.4.0Series.append中弃用

我相信你可以使用该append方法

bigdata = data1.append(data2, ignore_index=True)

保持他们的索引只是不使用ignore_index关键字......

于 2012-10-12T00:07:38.193 回答
133

您也可以使用pd.concat,当您加入两个以上的数据框时,这特别有用:

bigdata = pd.concat([data1, data2], ignore_index=True, sort=False)
于 2015-05-31T11:47:29.527 回答
73

想在这里添加它,以防有人发现它有用。@ostrokach 已经提到如何跨行合并数据框

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

要跨列合并,可以使用以下语法:

df_col_merged = pd.concat([df_a, df_b], axis=1)
于 2016-09-22T08:38:50.830 回答
27

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

如果您不想每次都创建新的 df,则可以改为聚合更改并concat仅调用一次:

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

这在本节底部连接对象下的 pandas 文档中指出):

注意:然而值得注意的是,concat(因此append)制作了数据的完整副本,并且不断重用此函数可能会对性能产生重大影响。如果您需要对多个数据集使用该操作,请使用列表推导。

于 2017-10-10T07:53:37.760 回答
5

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

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

df1.set_index('id')

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

df2.set_index('id')

最后使用以下代码片段更新数据框 —</p>

df1.update(df2)
于 2020-01-09T22:45:33.323 回答