我正在使用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的索引。
答案 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)