我正在使用python pandas数据帧,我有一个初始数据帧说D.我从中提取两个数据帧,如下所示:
D
A
然后我改变A和B中的标签:
A = D[D.label == k]
B = D[D.label != k]
Run Code Online (Sandbox Code Playgroud)
B
我想结合A和B,所以我可以将它们作为一个像union这样的数据框.数据的顺序并不重要,但是当我们从D中对A和B进行采样时,它们会保留D的索引.
Jor*_*ley 113
我相信你可以使用这种append
方法
bigdata = data1.append(data2, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
保持他们的索引不要使用ignore_index
关键字...
ost*_*ach 73
您也可以使用pd.concat
,这在您加入两个以上的数据帧时特别有用:
bigdata = pd.concat([data1, data2], ignore_index=True, sort =False)
Run Code Online (Sandbox Code Playgroud)
pel*_*umi 34
想在这里添加这个,有人觉得它很有用.@ostrokach已经提到过如何跨行合并数据框
df_row_merged = pd.concat([df_a, df_b], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
要跨列合并,可以使用以下语法:
df_col_merged =pd.concat([df_a, df_b], axis=1)
Run Code Online (Sandbox Code Playgroud)
mar*_*tin 10
对于您正在处理大数据并需要连接多个数据集的情况,还有另一种解决方案.concat
可以获得性能密集型,所以如果你不想每次都创建一个新的df,你可以使用列表理解:
frames = [ process_file(f) for f in dataset_files ]
result = pd.append(frames)
Run Code Online (Sandbox Code Playgroud)
(正如本节底部文档中所指出的那样):
注意:值得注意的是,
concat
(并因此append
)制作数据的完整副本,并且不断重复使用此功能可能会产生重大的性能损失.如果需要对多个数据集使用该操作,请使用列表推导.
如果您想用第二个df1
数据帧的值更新/替换第一个数据帧的值df2
。您可以按照以下步骤进行操作 \xe2\x80\x94
步骤 1:设置第一个数据帧的索引 (df1)
\n\ndf1.set_index('id')\n
Run Code Online (Sandbox Code Playgroud)\n\n步骤 2:设置第二个数据帧的索引 (df2)
\n\ndf2.set_index('id')\n
Run Code Online (Sandbox Code Playgroud)\n\n最后使用以下代码段更新数据框 \xe2\x80\x94
\n\ndf1.update(df2)\n
Run Code Online (Sandbox Code Playgroud)\n