利用pandas如何实现类似sql中的left join操作

 更新时间:2023年06月13日 10:30:33   作者:slaythedragon  
这篇文章主要介绍了利用pandas如何实现类似sql中的left join操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

pandas实现类似sql中的left join操作

使用pandas的merge函数

import pandas as pd
df1 = pd.read_csv(r"1.csv",index_col=0)
df2 = pd.read_csv(r"2.csv",index_col=0)
# on中填写根据哪个字段来进行连接,how为left代表left join
df = pd.merge(df1,df2, on='LocationID',how='left')
# print(df)
# 只取出这些列,组成新的DataFrame,带有col_name
df = df[['LocationName','Description','ActiveFlag','owner name','the location nature']]
# 将列进行重命名
new_col = ['location code', 'location name', 'ActiveFlag','owner name','the location nature']
df.columns = new_col
print(df)
# 导出为csv
df.to_csv(path_or_buf=r"3.csv", encoding="utf_8_sig")

pandas数据拼接操作merge、join、concat

在做数据处理过程中会遇到多个数据集之间进行拼接的操作,这里由于平时都是用的Pandas读取的数据集,所以一般是针对的是DataFrame类型的数据进行拼接操作。

1. merge

用于通过一个或多个键将两个数据集的行连接起来,类似于 SQL 中的 JOIN。

该函数的典型应用场景是,针对同一个主键存在两张包含不同字段的表,现在我们想把他们整合到一张表里。

在此典型情况下,结果集的行数并没有增加,列数则为两个元数据的列数和减去连接键的数量。

df.merge(right, how='inner', on=None, left_on=None,
         right_on=None, left_index=False, right_index=False, 
         sort=False, suffixes=('_x', '_y'), copy=True)

参数解释: 

  • right: 要连接的目标数据,类型为DataFrame或者带列名的Series 
  • how :连接方式,类似sql语句中的(left ,right,inner,outer),这里默认为'inner', 可选的参数有left, right , inner , outer
  • on : 连接的列名或者index, 也就是指明2个要连接的对象之间通过哪个列名或者索引名进行连接。
  • left_on : 指定左边的DataFrame以哪个列名或者索引名进行连接
  • right_on :指定右边的DataFrame以哪个列名或者索引名进行连接
  • left_index:用左边的DataFrame当做连接Key
  • right_index:用右边的DataFrame当做连接Key
  • sort:按照字典顺序对连接Key进行排序,默认为False,默认连接键的顺序取决于连接类型
  • suffixes:连接后的列名默认带下标 ('_x' ,  '_y')
  • copy:默认复制,如果设置为False,则尽可能的避免复制

a . 默认以相同的列名进行连接键 

2. join 

拼接列,主要用于索引上的合并,提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame

df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

参数解释:

  • other:另一个待拼接的DataFrame或者有名称列表的Series 
  • on:连接的列名或者index, 也就是指明2个要连接的对象之间通过哪个列名或者索引名进行连接。
  • how:连接方式,类似sql语句中的(left ,right,inner,outer),这里默认为'left', 可选的参数有left, right , inner , outer
  • lsuffix :  左边的连接Key要用的下标
  • rsuffix : 右边的连接Key要用的下标
  • sort:对拼接后的列名按照字典顺序排序,默认为False,False的时候,保留按照左边的DataFrame进行排序的顺序。

3. concat

可以沿着一条轴将多个对象堆叠到一起

concat方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种)。

与数据库不同的是concat不会去重,要达到去重的效果可以使用drop_duplicates方法

pandas.concat(objs, axis=0, join='outer',
              ignore_index=False, keys=None, levels=None,
              names=None, verify_integrity=False,copy=True)

参数解释:

  • objs: 需要连接的对象集合,一般是列表或字典;
  • axis: 0代表index 连接,1代表列连接 ,默认为0 
  • join:连接方式 ,默认为‘outer’,还可以选择‘inner’
  • ignore_index:默认为False,如果为True,则是指忽略之前的Index,直接按照默认分配index从0-N-1进行分配,对于结合后的index并没有啥意义的时候比较适用,用来重建索引
  • keys:用来创建层次化索引
  • levels: 层级,用来在列上进行划分
  • names:指定levels中的列名
  • verify_integrity :确定新结合的数据是否有重复值,但是会很耗费资源
  • copy:复制数据 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Pyinstaller 打包exe教程及问题解决

    Pyinstaller 打包exe教程及问题解决

    这篇文章主要介绍了Pyinstaller 打包exe教程及问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 使用Keras建立模型并训练等一系列操作方式

    使用Keras建立模型并训练等一系列操作方式

    这篇文章主要介绍了使用Keras建立模型并训练等一系列操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 2019 Python最新面试题及答案16道题

    2019 Python最新面试题及答案16道题

    这篇文章主要介绍了2019 Python最新面试题及答案16道题 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 用Python判断奇偶数示例

    用Python判断奇偶数示例

    大家好,本篇文章主要讲的是用Python判断奇偶数示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 基于python使用Pillow做动态图在图中生成二维码以及图像处理

    基于python使用Pillow做动态图在图中生成二维码以及图像处理

    这篇文章主要介绍了基于python使用Pillow做动态图在图中生成二维码以及图像处理,分享pillow的一些简单使用,喜欢的话大家可以参考文章内容下去试试奥
    2022-02-02
  • Python实现层次分析法及自调节层次分析法的示例

    Python实现层次分析法及自调节层次分析法的示例

    这篇文章主要介绍了Python实现层次分析法及自调节层次分析法的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 教你用Python创建微信聊天机器人

    教你用Python创建微信聊天机器人

    这篇文章主要手把手教你用Python创建微信聊天机器人,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 利用python 读写csv文件

    利用python 读写csv文件

    python中有一个读写csv文件的包,直接import csv即可。利用这个python包可以很方便对csv文件进行操作。
    2020-09-09
  • Python 切片索引越界的问题(数组下标越界)

    Python 切片索引越界的问题(数组下标越界)

    Python语言处理字符串、数组类的问题时有一定概率需要使用切片方法,本文主要介绍了Python 切片索引越界的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 利用python生成照片墙的示例代码

    利用python生成照片墙的示例代码

    这篇文章主要介绍了利用python生成照片墙的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论