百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

python数据分析:详解数据框的合并

ztj100 2025-02-18 14:24 38 浏览 0 评论

不知道大家有没有分析过Kaggle的数据或者参加过Kaggle的挑战,里面的数据都分布在几个不同的数据集中,合并数据在所难免。今天给大家详细总结一波pandas中数据框合并和连接的方法。建议收藏,哈哈。

生成练习用的数据框

首先我们先用如下代码生成3个数据框,作为演示讲解之用。

Bash
df1 =pd.DataFrame({
        'id': ['1', '2', '3', '4', '5'],
        'Feature1': ['A', 'C', 'E', 'G', 'I'],
        'Feature2': ['B', 'D', 'F', 'H', 'J']}) 
df2 =pd.DataFrame({
        'id': ['1', '2', '6', '7', '8'],
        'Feature1': ['K', 'M', 'O', 'Q', 'S'],
        'Feature2': ['L', 'N', 'P', 'R', 'T']})
df3 = pd.DataFrame({
        'id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
        'Feature3': [12, 13, 14, 15, 16, 17, 15, 12, 13, 23]})

得到3个数据框,如下:



连接数据框Concatenate DataFrames

如果只是简单的连接两个数据框的行的话,直接调用concat()方法即可

Bash
df_row = pd.concat([df1, df2])

df_row



可以看到,数据框df1和df2就以行连接在一起了,但是你注意到没,此时数据框的索引有问题,我们想要的索引应该自动给我们填好才对,这个时候我们需要将ignore_index参数设置为True。

df_row = pd.concat([df1, df2], ignore_index=True)

这个时候索引就正确了。

有时候,你虽然连接了2个数据框,但是你还是想知道新数据框的数据分别来自哪个数据框,这个时候调用keys参数就可以,例如,我们在上面的例子中将来自df1的数据和df2的数据分别加上标签x,y。

df_keys = pd.concat([df1,df2], keys=['x', 'y'])

df_keys


可以看到,新数据框中哪些数据来自于哪个数据框一目了然。

同时,给新的数据框加上标签也有助于我们在新数据中切片出旧的数据框,例如

df_keys.loc['y']


通过以上代码,很容易在新数据框中切片出了df2。

在连接数据框时还有一个技巧,就是将数据框以字典值的形式传递给 concat(),可以在连接的新数据框中自动加上标签,这个标签就是字典的键。看下例:

df_piece = pd.concat({'第一个框':df1,'第二个框':df2})

df_piece


有没有很好使?

concat()函数也可以横向连接数据框,只需要将axis设置为1即可

df_col = pd.concat([df1,df2], axis=1)

df_col


可以看到这个就是横向连接。

合并数据框Merge DataFrames

我们看一下如何将df_row(由df1和df2连接后得到,见之前的例子)和df3以共同的id为基础合并起来。

df_merge_col = pd.merge(df_row, df3, on='id')

df_merge_col


此时,我们注意到id等于1的行出现了2次,是因为在df_row中是有2个id等于1的,而在df3中id等于1只有一次,所以合并后的feature3都是12。

还有一种情况是你要合并的2个数据框没有一样名字的列,需要你指定,这个时候就要用到left_on,right_on参数了。

df_merge_difkey = pd.merge(df_row, df3, left_on='id', right_on='id')

df_merge_difkey


此例中我们左右数据框都指定以id为基础进行合并。

还有一种情况是,你想给原先的数据框加一行新数据,看下例:

add_row = pd.Series(['10', 'X1', 'X2', 'X3'],
                    index=['id','Feature1', 'Feature2', 'Feature3'])

df_add_row = df_merge_col.append(add_row, ignore_index=True)

df_add_row

可以看到,通过append可以给一个数据框加上一个新的series。

不同的合并逻辑Outer,Inner,Right,Left与index

Outer合并会将两个数据库的所有数据都合并,相当于取原来数据库的并集形成一个新的数据库

df_outer = pd.merge(df1, df2, on='id', how='outer')

df_outer


可以看到,这种合并方法,生成的新数据集中会有很多NaN的值,还有,需要注意的是这种方法会自动将相同列名加上后缀,而且这个后缀是可以改的,看下例:

df_suffix = pd.merge(df1, df2, left_on='id',right_on='id',how='outer',suffixes=('_left','_right'))

df_suffix


可以看到suffixes参数可以修改后缀。

Inner合并生成的新数据集中只会有原来2个数据集中都有的数据,相当于取了两个数据框的交集。

df_inner = pd.merge(df1, df2, on='id', how='inner')

df_inner


相应的,Right,和Left就是分别以第二个和第一个数据框中的变量为基准进行数据框的合并,大家也可以试试。有时候,我们会根据2个数据框的index来合并,此时,只需要将right_index,left_index两个参数设置为True即可。看下面例子:

df_index = pd.merge(df1, df2, right_index=True, left_index=True)

df_index


结论

好了,今天给大家介绍了concat() 和 merge()合并数据框的用法,希望对大家有帮助。感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的,加油。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期精彩:

python数据分析:缺失数据的处理

python数据分析:离群值的检测和处理

python应用:如何用python提取pdf文件中的文字

相关推荐

Python 操作excel的坑__真实的行和列

大佬给的建议__如何快速处理excelopenpyxl库操作excel的时候,单个表的数据量大一些处理速度还能接受,如果涉及多个表甚至多个excel文件的时候速度会很慢,还是建议用pandas来处理,...

Python os.path模块使用指南:轻松处理文件路径

前言在Python编程中,文件和目录的操作是非常重要的一部分。为了方便用户进行文件和目录的操作,Python标准库提供了os模块。其中,os.path子模块提供了一些处理文件路径的函数和方法。本文主要...

Python常用内置模块介绍——文件与系统操作详解

Python提供了多个强大的内置模块用于文件和系统操作,下面我将详细介绍最常用的几个模块及其核心功能。1.os模块-操作系统交互...

Python Flask 建站框架实操教程(flask框架网页)

下面我将带您从零开始构建一个完整的Flask网站,包含用户认证、数据库操作和前端模板等核心功能。##第一部分:基础项目搭建###1.创建项目环境```bash...

为你的python程序上锁:软件序列号生成器

序列号很多同学可能开发了非常多的程序了,并且进行了...

PO设计模式全攻略,在 UI 自动化中的实践总结(以企业微信为例)

一、什么是PO设计模式?PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个Page类,即一个py文件,并以页面为单位来写测试用例,实现页面对象和测试用例的...

这种小工具居然也能在某鱼卖钱?我用Python一天能写...

前两天在某鱼闲逛,本来想找个二手机械键盘,结果刷着刷着突然看到有人在卖——Word批量转PDF小工具...

python打包成exe,程序有图标,但是任务栏和窗口都没有显示图标

代码中指定图标信息#设置应用ID,确保任务栏图标正确显示ifsys.platform=="win32":importctypesapp_id=...

使用Python构建电影推荐系统(用python做推荐系统)

在日常数据挖掘工作中,除了会涉及到使用Python处理分类或预测任务,有时候还会涉及推荐系统相关任务。...

python爬取并分析淘宝商品信息(python爬取淘宝商品数据)

python爬取并分析淘宝商品信息背景介绍一、模拟登陆二、爬取商品信息1.定义相关参数2.分析并定义正则3.数据爬取三、简单数据分析1.导入库2.中文显示3.读取数据4.分析价格分布5.分析销售...

OpenCV入门学习基础教程(从小白变大神)

Opencv是用于快速处理图像处理、计算机视觉问题的工具,支持多种语言进行开发如c++、python、java等,下面这篇文章主要给大家介绍了关于openCV入门学习基础教程的相关资料,需要的朋友可以...

python图像处理-一行代码实现灰度图抠图

抠图是ps的最基本技能,利用python可以实现用一行代码实现灰度图抠图。基础算法是...

从头开始学python:如何用Matplotlib绘图表

Matplotlib是一个用于绘制图表的库。如果你有用过python处理数据,那Matplotlib可以更直观的帮你把数据展示出来。直接上代码看例子:importmatplotlib.pyplot...

Python爬取爱奇艺腾讯视频 250,000 条数据分析为什么李诞不值得了

在《Python爬取爱奇艺52432条数据分析谁才是《奇葩说》的焦点人物?》这篇文章中,我们从爱奇艺爬取了5万多条评论数据,并对一些关键数据进行了分析,由此总结出了一些明面上看不到的数据,并...

Python Matplotlib 库使用基本指南

简介Matplotlib是一个广泛使用的Python数据可视化库,它可以创建各种类型的图表、图形和可视化效果。无论是简单的折线图还是复杂的热力图,Matplotlib提供了丰富的功能来满足我们...

取消回复欢迎 发表评论: