如何在python pandas中组合两个数据框

时间:2012-10-11 23:53:37

标签: python pandas

我正在使用python pandas数据帧,我有一个初始数据框说D.我从中提取两个数据帧:

A = D[D.label == k]

B = D[D.label != k]

然后我改变A和B中的标签:

A.label = 1

B.label = -1

我希望将A和B结合起来,这样我就可以将它们作为一个类似于union的数据框架。数据的顺序并不重要,但是当我们从D中对A和B进行采样时,它们会保留D的索引。

6 个答案:

答案 0 :(得分:94)

我相信你可以使用append方法

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

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

答案 1 :(得分:59)

您还可以使用pd.concat,这在您加入两个以上的数据帧时特别有用:

bigdata = pd.concat([data1, data2], ignore_index=True)

答案 2 :(得分:30)

想在这里添加这个,有人觉得它很有用。 @ostrokach已经提到了如何跨行合并数据框

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

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

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

答案 3 :(得分:7)

对于您正在处理大数据并需要连接多个数据集的情况,还有另一种解决方案。 concat可能会导致性能密集,因此如果您不想每次都创建新的df,则可以使用列表理解

frames = [ process_file(f) for f in dataset_files ]
result = pd.append(frames)

(如本节底部所指出的here in the docs):

  

注意:值得注意的是,concat(因此append)   制作完整的数据副本,并不断重复使用   功能可以创造显着的性能。如果你需要使用   对几个数据集的操作,使用列表推导。

答案 4 :(得分:2)

如果要用第二个数据帧df1的值更新/替换第一个数据帧df2的值。您可以按照以下步骤进行操作-

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

df1.set_index('id')

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

df2.set_index('id')

最后使用以下代码段更新数据框-

df1.update(df2)

答案 5 :(得分:0)

第一个数据帧

train.shape

结果:-

(31962, 3)

第二个数据框架

test.shape

结果:-

(17197, 2)

合并

new_data=train.append(test,ignore_index=True)

检查

new_data.shape

结果:-

(49159, 3)