在 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 50Merge和Join的效率对比
Pandas 中的Merge Joins操作都可以针对指定的列进行合并操作(SQL中的join)那么他们的执行效率是否相同呢?下面我们来进行一下测。
两个 DataFrame 都有相同数量的行和两列,实验中考虑了从 100 万行到 1000 万行的不同大小的 DataFrame,并在每次实验中将行数增加了 100 万。我对固定数量的行重复了十次实验,以消除任何随机性。下面是这十次试验中合并操作的平均运行时间。
上图描绘了操作所花费的时间(以毫秒为单位)。
正如我们从图中看到的,运行时间存在显着差异——最多相差 5 倍。随着 DataFrame 大小的增加,运行时间之间的差异也会增加。 两个 JOIN 操作几乎都随着 DataFrame 的大小线性增加。 但是,Join的运行时间增加的速度远低于Merge。
如果需要处理大量数据,还是请使用join()进行操作。
- 上一篇:Pandas 的Merge函数详解
- 下一篇:5分钟了解Pandas的透视表
相关推荐
- 最强升级系统赵放(最强升级系统赵放等级划分)
-
女主只有一个,就是他青梅竹马的女朋友刘佳丽
- 联想线上客服(联想客服是24小时的吗)
-
网上买的联想电脑如果要有售后必须要在正规的网上平台购买,才能享受到售后服务的,所以在网上购买店联想电脑的时候一定要在联想电脑的专卖店进行购买,下单后同时他就会生成售后服务保障单据,在网上购买的联想电脑...
- 绿色版photoshop(智慧彩票app下载绿色版)
-
1.安装方面:Photoshop绿色版的话,体积小巧,方便运用,而正规下载安装的体积较大,安装比较麻烦。2.软件功能方面:其实绿色版的话一般比较简洁,功能的话一般是简化了的,而正规渠道下载安装的比较齐...
- 讯飞输入法官方下载(讯飞输入法最新下载)
-
打开手机应用商店,在上面搜索条栏里输入讯飞软件下载方法/步骤分步阅读1/6首先,你要下载一个讯飞输入法,然后把讯飞输入法设为手机的默认输入法。2/6接下来,打开qq或微信,打开与好友的对话框,点击右下...
- 固态硬盘开启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系统,进入...
- 微软工具官网(微软工具软件)
-
在桌面上找到打不开的快捷方式,右键菜单中选择属性,先看下这个快捷方式具体的存放路径是在哪里2.到对应的路径下去找,看看应用软件是否真的存放在了那个位置,如果没有找到,说明软件的安装位置已经被移动;如果...
- visio密钥在哪里输入(visio professional密钥)
-
GR24B-GC2XY-KRXRG-2TRJJ-4X7DCGR24B-GC2XY-KRXRG-2TRJJ-4X7DCVWQ6G-37WBG-J7DJP-CY66Y-V278X2T8H8-JPW3...
- 笔记本控制面板在哪里(笔记本控制面板在哪个位置)
-
最近有Win10用户反映,因为刚升级Win10,所以对Win10的一切操作都还很不熟悉,其中就有一个让用户非常困恼的问题,那就是找不到控制面板。明明开始菜单已经找到了,但就是怎么找都找不到控制面板。下...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
