百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

在 Pandas 中使用 Merge、Join 、Concat合并数据的效率对比

liuian 2025-01-12 16:25 54 浏览

在 Pandas 中有很多种方法可以进行DF的合并。本文将研究这些不同的方法,以及如何将它们应用到我们的数据中。

合并DF

Pandas 使用 .merge() 方法来执行合并。

import pandas as pd 

# a dictionary to convert to a dataframe 
data1 = {'identification': ['a', 'b', 'c', 'd'], 
'Customer_Name':['King', 'West', 'Adams', 'Mercy'], 'Category':['furniture', 'Office Supplies', 'Technology', 'R_materials'],} 

# our second dictionary to convert to a dataframe 
data2 = {'identification': ['a', 'b', 'c', 'd'], 
'Class':['First_Class', 'Second_Class', 'Same_day', 'Standard Class'], 
'Age':[60, 30, 40, 50]} 

# Convert the dictionary into DataFrame 
df1 = pd.DataFrame(data1) 
df2 = pd.DataFrame(data2)

运行我们的代码后,有两个 DataFrame,如下所示。

identification Customer_Name Category 
0 a King furniture 
1 b West Office Supplies 
2 c Adams Technology 
3 d Mercy R_materials 
identification Class Age 
0 a First_Class 60 
1 b Second_Class 30 
2 c Same_day 40 
3 d Standard Class 50

使用 merge() 函数进一步合并。

# using .merge() function 
new_data = pd.merge(df1, df2, on='identification')

这产生了下面的新数据;

identification Customer_Name Category Class Age 
0 a King furniture First_Class 60 
1 b West Office Supplies Second_Class 30 
2 c Adams Technology Same_day 40 
3 d Mercy R_materials Standard Class 50

.join() 方法也可以将不同索引的 DataFrame 组合成一个新的 DataFrame。 我们可以使用参数‘on’参数指定根据哪列进行合并。

让我们看看下面的例子,我们如何将单索引 DataFrame 与多索引 DataFrame 连接起来;

import pandas as pd 

# a dictionary to convert to a dataframe 
data1 = { 
'Customer_Name':['King', 'West', 'Adams'], 
'Category':['furniture', 'Office Supplies', 'Technology'],} 7 
# our second dictionary to convert to a dataframe 
data2 = { 
'Class':['First_Class', 'Second_Class', 'Same_day', 'Standard Class'], 
'Age':[60, 30, 40, 50]} 
# Convert the dictionary into DataFrame 
Ndata = pd.DataFrame(data1, index=pd.Index(['a', 'b', 'c'], name='identification')) 
index = pd.MultiIndex.from_tuples([('a', 'x0'), ('b', 'x1'), 
('c', 'x2'), ('c', 'x3')], 
names=['identification', 'x']) 19 
# Convert the dictionary into DataFrame 
Ndata2 = pd.DataFrame(data2, index= index) 
print(Ndata, "\n\n", Ndata2) 
# joining singly indexed with 
# multi indexed 
result = Ndata.join(Ndata2, how='inner')

我们的结果如下所示;

Customer_Name Category Class Age 
identification x 3 a x0 King furniture First_Class 60 
b x1 West Office Supplies Second_Class 30 
c x2 Adams Technology Same_day 40 
x3 Adams Technology Standard Class 50

连接DF

Pandas 中concat() 方法在可以在垂直方向(axis=0)和水平方向(axis=1)上连接 DataFrame。 我们还可以一次连接两个以上的 DataFrame 或 Series。

让我们看一个如何在 Pandas 中执行连接的示例;

import pandas as pd 

# a dictionary to convert to a dataframe 
data1 = {'identification': ['a', 'b', 'c', 'd'], 
'Customer_Name':['King', 'West', 'Adams', 'Mercy'], 
'Category':['furniture', 'Office Supplies', 'Technology', 'R_materials'],} 

# our second dictionary to convert to a dataframe 
data2 = {'identification': ['a', 'b', 'c', 'd'], 
'Class':['First_Class', 'Second_Class', 'Same_day', 'Standard Class'], 
'Age':[60, 30, 40, 50]} 

# Convert the dictionary into DataFrame 
df1 = pd.DataFrame(data1) 
df2 = pd.DataFrame(data2) 
#perform concatenation here based on horizontal axis 
new_data = pd.concat([df1, df2], axis=1) 
print(new_data)

这样就获得了新的 DataFrame :

identification Customer_Name Category identification \ 
0 a King furniture a 3 1 b West Office Supplies b 4 2 c Adams Technology c 5 3 d Mercy R_materials d 

Class Age 
0 First_Class 60 
1 Second_Class 30 
2 Same_day 40 
3 Standard Class 50

Merge和Join的效率对比

Pandas 中的Merge Joins操作都可以针对指定的列进行合并操作(SQL中的join)那么他们的执行效率是否相同呢?下面我们来进行一下测。

两个 DataFrame 都有相同数量的行和两列,实验中考虑了从 100 万行到 1000 万行的不同大小的 DataFrame,并在每次实验中将行数增加了 100 万。我对固定数量的行重复了十次实验,以消除任何随机性。下面是这十次试验中合并操作的平均运行时间。

上图描绘了操作所花费的时间(以毫秒为单位)。

正如我们从图中看到的,运行时间存在显着差异——最多相差 5 倍。随着 DataFrame 大小的增加,运行时间之间的差异也会增加。 两个 JOIN 操作几乎都随着 DataFrame 的大小线性增加。 但是,Join的运行时间增加的速度远低于Merge。

如果需要处理大量数据,还是请使用join()进行操作。

相关推荐

最强升级系统赵放(最强升级系统赵放等级划分)

女主只有一个,就是他青梅竹马的女朋友刘佳丽

联想线上客服(联想客服是24小时的吗)

网上买的联想电脑如果要有售后必须要在正规的网上平台购买,才能享受到售后服务的,所以在网上购买店联想电脑的时候一定要在联想电脑的专卖店进行购买,下单后同时他就会生成售后服务保障单据,在网上购买的联想电脑...

绿色版photoshop(智慧彩票app下载绿色版)

1.安装方面:Photoshop绿色版的话,体积小巧,方便运用,而正规下载安装的体积较大,安装比较麻烦。2.软件功能方面:其实绿色版的话一般比较简洁,功能的话一般是简化了的,而正规渠道下载安装的比较齐...

显卡那个品牌那个好(显卡那牌子好)
  • 显卡那个品牌那个好(显卡那牌子好)
  • 显卡那个品牌那个好(显卡那牌子好)
  • 显卡那个品牌那个好(显卡那牌子好)
  • 显卡那个品牌那个好(显卡那牌子好)
讯飞输入法官方下载(讯飞输入法最新下载)

打开手机应用商店,在上面搜索条栏里输入讯飞软件下载方法/步骤分步阅读1/6首先,你要下载一个讯飞输入法,然后把讯飞输入法设为手机的默认输入法。2/6接下来,打开qq或微信,打开与好友的对话框,点击右下...

office 许可证有问题(office提示许可证有问题)
  • office 许可证有问题(office提示许可证有问题)
  • office 许可证有问题(office提示许可证有问题)
  • office 许可证有问题(office提示许可证有问题)
  • office 许可证有问题(office提示许可证有问题)
光环助手官方下载(光环助手官方下载入口)
  • 光环助手官方下载(光环助手官方下载入口)
  • 光环助手官方下载(光环助手官方下载入口)
  • 光环助手官方下载(光环助手官方下载入口)
  • 光环助手官方下载(光环助手官方下载入口)
固态硬盘开启ahci模式(固态硬盘 ahci模式)

不同的主板,界面不同,基本的方法是一样的:1、开机按DEL进BIOS,进Advanced,再进SATAConfiguration。2、在SATAModeSelection(或CHipSataType)...

电脑会自动关机是什么原因(电脑无缘无故自动关机)
电脑会自动关机是什么原因(电脑无缘无故自动关机)

1、如果你使用的是笔记本电脑,你的电脑又自动关机,有可能是因为电脑电量不足导致的。这个时候仅需给电脑充电即可解决。2、如果是电脑过热,电脑散热不良,主板故障,也是可能导致电脑自动关机的或者是反复重启。这个时候应该检查一下电脑CPU风扇是否损...

2026-01-23 22:21 liuian

恢复观看历史记录视频(恢复观看历史记录视频怎么弄)
恢复观看历史记录视频(恢复观看历史记录视频怎么弄)

可以通过查找历史记录,然后重新再观看即可。以西瓜视频为例:1、打开西瓜视频,在我的界面点击观看历史。2、查看电影历史播放记录即可。1、连接网络点击进入自己看该电影的播放器;2、在首页右下角处,点击进入我的页面;3、在我的页面中有显示“历史播...

2026-01-23 22:05 liuian

win98系统ghost版win98(win98 iso)

首先做GHOST需要把GHOST拷贝在你的硬盘上,或D或E盘,然后看好你要放在的盘符是不是有足够的空间存放备份文件,一般安装软件后需要1.5G左右,重新启动电脑,按F8键进入选项,选择DOS系统,进入...

tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
微软工具官网(微软工具软件)

在桌面上找到打不开的快捷方式,右键菜单中选择属性,先看下这个快捷方式具体的存放路径是在哪里2.到对应的路径下去找,看看应用软件是否真的存放在了那个位置,如果没有找到,说明软件的安装位置已经被移动;如果...

visio密钥在哪里输入(visio professional密钥)

GR24B-GC2XY-KRXRG-2TRJJ-4X7DCGR24B-GC2XY-KRXRG-2TRJJ-4X7DCVWQ6G-37WBG-J7DJP-CY66Y-V278X2T8H8-JPW3...

笔记本控制面板在哪里(笔记本控制面板在哪个位置)

最近有Win10用户反映,因为刚升级Win10,所以对Win10的一切操作都还很不熟悉,其中就有一个让用户非常困恼的问题,那就是找不到控制面板。明明开始菜单已经找到了,但就是怎么找都找不到控制面板。下...