python Dataframe 合并与去重详情

目录
  • 1.合并
    • 1.1 结构合并
      • 1.1.1 concat函数
      • 1.1.2 append函数
    • 1.2 字段合并
  • 2.去重

1.合并

1.1 结构合并

将两个结构相同的数据合并

1.1.1 concat函数

函数配置:

concat([dataFrame1, dataFrame2,…], index_ingore=False)

参数说明:index_ingore=False(表示合并的索引不延续),index_ingore=True(表示合并的索引可延续)

实例:

import pandas as pd
import numpy as np

# 创建一个十行两列的二维数据
df = pd.DataFrame(np.random.randint(0, 10, (3, 2)), columns=['A', 'B'])

# 将数据拆分成两份,并保存在列表中
data_list = [df[0:2], df[3:]]

# 索引值不延续
df1 = pd.concat(data_list, ignore_index=False)

# 索引值延续
df2 = pd.concat(data_list, ignore_index=True)

返回结果:

----------------df--------------------------
   A  B
0  7  8
1  7  3
2  5  9
3  4  0
4  1  8
----------------df1--------------------------
   A  B
0  7  8
1  7  3
3  4  0# -------------->这里并没有2出现,索引不连续
4  1  8
----------------df2--------------------------
   A  B
0  7  8
1  7  3
2  4  0
3  1  8

1.1.2 append函数

函数配置:

df.append(df1, index_ignore=True) 

参数说明:index_ingore=False(表示索引不延续),index_ingore=True(表示索引延续)

实例:

import pandas as pd
import numpy as np

# 创建一个五行两列的二维数组
df = pd.DataFrame(np.random.randint(0, 10, (5, 2)), columns=['A', 'B'])

# 创建要追加的数据
narry = np.random.randint(0, 10, (3, 2))
data_list = pd.DataFrame(narry, columns=['A', 'B'])

# 合并数据
df1 = df.append(data_list, ignore_index=True)

返回结果:

----------------df--------------------------
   A  B
0  5  6
1  1  2
2  5  3
3  1  8
4  1  2
----------------df1--------------------------
   A  B
0  5  6
1  1  2
2  5  3
3  1  8
4  1  2
5  8  1
6  3  5
7  1  1

1.2 字段合并

将同一个数据不同列合并

参数配置:

pd.merge( left, right, how="inner", on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=("_x", "_y"), copy=True, indicator=False, validate=None, )

参数说明:

参数 说明
how 连接方式:inner、left、right、outer,默认为 inner
on 用于连接的列名
left_on 左表用于连接的列名
right_on 右表用于连接的列名
Left_index 是否使用左表的行索引作为连接键,默认为False
Right_index 是否使用右表的行索引作为连接键,默认为False
sort 默认为False,将合并的数据进行排序
copy 默认为True。总是将数据复制到数据结构中,设置为False可以提高性能
suffixes 存在相同列名时在列名后面添加的后缀,默认为(’_x’, ‘_y’)
indicator 显示合并数据中数据来自哪个表

实例1:

import pandas as pd

df1 = pd.DataFrame({'key':['a','b','c'], 'data1':range(3)})
df2 = pd.DataFrame({'key':['a','b','c'], 'data2':range(3)})
df = pd.merge(df1, df2) # 合并时默认以重复列并作为合并依据

结果展示:

----------------df1--------------------------
  key  data1
0   a      0
1   b      1
2   c      2
----------------df2--------------------------
  key  data2
0   a      0
1   b      1
2   c      2
----------------df---------------------------
  key  data1  data2
0   a      0      0
1   b      1      1
2   c      2      2

实例2:

# 多键连接时将连接键组成列表传入

right=DataFrame({'key1':['foo','foo','bar','bar'],
         'key2':['one','one','one','two'],
         'lval':[4,5,6,7]})  

left=DataFrame({'key1':['foo','foo','bar'],
         'key2':['one','two','one'],
         'lval':[1,2,3]})  

pd.merge(left,right,on=['key1','key2'],how='outer')

结果展示:

----------------right-------------------------
  key1 key2  lval
0  foo  one     4
1  foo  one     5
2  bar  one     6
3  bar  two     7
----------------left--------------------------
  key1 key2  lval
0  foo  one     1
1  foo  two     2
2  bar  one     3
----------------df---------------------------
  key1 key2  lval_x  lval_y
0  foo  one     1.0     4.0
1  foo  one     1.0     5.0
2  foo  two     2.0     NaN
3  bar  one     3.0     6.0
4  bar  two     NaN     7.0

2.去重

参数配置:

data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

参数说明:

参数 说明
subset 列名,可选,默认为None
keep {‘first’, ‘last’, False}, 默认值 ‘first’
first 保留第一次出现的重复行,删除后面的重复行
last 删除重复项,除了最后一次出现
False 删除所有重复项
inplace 布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。(inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。)

实例:

去除完全重复的行数据

data.drop_duplicates(inplace=True)

df = pd.DataFrame({
    'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'rating': [4, 4, 3.5, 15, 5]
})

df.drop_duplicates()

结果展示:

---------------去重前的df---------------------------
brand style rating
0 Yum Yum cup 4.0
1 Yum Yum cup 4.0
2 Indomie cup 3.5
3 Indomie pack 15.0
4 Indomie pack 5.0
---------------去重后的df---------------------------
brand style rating
0 Yum Yum cup 4.0
2 Indomie cup 3.5
3 Indomie pack 15.0
4 Indomie pack 5.0

使用subset 去除某几列重复的行数据

data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)

df.drop_duplicates(subset=['brand'])

结果展示:

brand style rating
0 Yum Yum cup 4.0
2 Indomie cup 3.5

使用 keep删除重复项并保留最后一次出现

df.drop_duplicates(subset=['brand', 'style'], keep='last') 

结果展示:

brand style rating
1 Yum Yum cup 4.0
2 Indomie cup 3.5
4 Indomie pack 5.0

到此这篇关于python Dataframe 合并与去重详情的文章就介绍到这了,更多相关python Dataframe内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python Dataframe 指定多列去重、求差集的方法

    1)去重 指定多列去重,这是在dataframe没有独一无二的字段作为PK(主键)时,需要指定多个字段一起作为该行的PK,在这种情况下对整体数据进行去重. Attention:主要用到了drop_duplicates方法,并设置参数subset为多个字段名构成的数组. 具体代码如下: >>>import pandas as pd >>>data={'state':[1,1,2,2,1,2,2],'pop':['a','b','c','d','b','c','d']} &

  • python pandas dataframe 按列或者按行合并的方法

    concat 与其说是连接,更准确的说是拼接.就是把两个表直接合在一起.于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis . 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False) objs 是需要拼接的对象集合,一般为列表或者字典 axis=0 是

  • python pandas dataframe 去重函数的具体使用

    今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数 先看一个小例子 from pandas import Series, DataFrame data = DataFrame({'k': [1, 1, 2, 2]}) print data IsDuplicated = data.duplicated() print IsDuplicated print type(IsDuplicated) data = data.drop_duplicates() print data 执行

  • python中DataFrame数据合并merge()和concat()方法详解

    目录 merge() 1.常规合并 ①方法1 ②方法2 重要参数 合并方式 left right outer inner 2.多对一合并 3.多对多合并 concat() 1.相同字段的表首位相连 2.横向表合并(行对齐) 3.交叉合并 总结 merge() 1.常规合并 ①方法1 指定一个参照列,以该列为准,合并其他列. import pandas as pd df1 = pd.DataFrame({'id': ['001', '002', '003'], 'num1': [120, 101,

  • 关于python DataFrame的合并方法总结

    目录 python DataFrame的合并方法 #concat函数 #merge函数 #append函数 把两个dataframe合并成一个 python DataFrame的合并方法 Python的Pandas针对DataFrame,Series提供了多个合并函数,通过参数的调整可以轻松实现DatafFrame的合并. 首先,定义3个DataFrame df1,df2,df3,进行concat.merge.append函数的实验. df1=pd.DataFrame([[1,2,3],[2,3

  • Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)

    摘要 在进行数据分析时,我们经常需要对DataFrame去重,但有时候也会需要只保留重复值. 这里就简单的介绍一下对于DataFrame去重和取重复值的操作. 创建DataFrame 这里首先创建一个包含一行重复值的DataFrame. 2.DataFrame去重,可以选择是否保留重复值,默认是保留重复值,想要不保留重复值的话直接设置参数keep为False即可. 3.取DataFrame重复值.大多时候我们都是需要将数据去重,但是有时候很我们也需要取重复数据,这个时候我们就可以根据刚刚上面我们

  • Python数据分析之 Pandas Dataframe合并和去重操作

    目录 一.之 Pandas Dataframe合并 二.去重操作 一.之 Pandas Dataframe合并 在数据分析中,避免不了要从多个数据集中取数据,那就避免不了要进行数据的合并,这篇文章就来介绍一下 Dataframe 对象的合并操作. Pandas 提供了merge()方法来进行合并操作,使用语法如下: pd.merge(left, right, how="inner", on=None, left_on=None, right_on=None, left_index=Fa

  • Python Pandas实现DataFrame合并的图文教程

    目录 一.merge(合并)的语法: 二.以关键列来合并两个dataframe 三.理解merge时数量的对齐关系 1.one-to-one 一对一关系的merge 2.one-to-many 一对多关系的merge 3.many-to-many 多对多关系的merge 四.理解left join.right join.inner join.outer join的区别 1.inner join,默认 2.left join 3. right join 4. outer join 五.如果出现非K

  • python之DataFrame实现excel合并单元格

    在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元格进行合并,比如如下表表格,需要根据A列的值,合并B.C列的对应单元格 pandas中的to_excel方法只能对索引进行合并,而xlsxwriter中,虽然提供有merge_range方法,但是这只是一个和基础的方法,每次都需要编写繁琐的测试才能最终调好,而且不能很好的重用.所以想自己写一个方法,结合dataframe和merge_range.大概思路是: 1.定义一个MY_DataFrame类,继承DataFrame类,这样能很

  • python Dataframe 合并与去重详情

    目录 1.合并 1.1 结构合并 1.1.1 concat函数 1.1.2 append函数 1.2 字段合并 2.去重 1.合并 1.1 结构合并 将两个结构相同的数据合并 1.1.1 concat函数 函数配置: concat([dataFrame1, dataFrame2,-], index_ingore=False) 参数说明:index_ingore=False(表示合并的索引不延续),index_ingore=True(表示合并的索引可延续) 实例: import pandas as

  • Python数据分析之 Pandas Dataframe条件筛选遍历详情

    目录 一.条件筛选 二.Dataframe数据遍历 for...in...语句 iteritems()方法 iterrows()方法 itertuples()方法 一.条件筛选 查询Pandas Dataframe数据时,经常会筛选出符合条件的数据,接下来介绍一下具体的使用方式. 示例Dataframe如下: 单条件筛选,例如查询gender为woman的数据: df[df["gender"]=="woman"] # 或 df.loc[df["gender

  • Python批量合并有合并单元格的Excel文件详解

    合并单元格 合并单元格相信大家都会,比如下面这段简单的代码就可以实现: app='Word' word=win32.gencache.EnsureDispatch('%s.Application' % app) doc=word.Documents.Add() word.Visible=False #Title begin sel =word.Selection sel.Font.Name = u"微软雅黑" sel.Font.Size = 8 sel.Font.Bold = Fals

  • Python实现合并excel表格的方法分析

    本文实例讲述了Python实现合并excel表格的方法.分享给大家供大家参考,具体如下: 需求 将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数 思路 用os库将所需要处理的表格放到同一个列表中,然后遍历列表,依次把所有文件纵向连接起来. 最开始的第一种思路是先拿一个文件出来,然后让这个文件依次去和列表中的剩余文件合并: 第二种是用文件夹中第一个文件和剩余的文件合并,使用range(1,len(file)),可以省去单独取第一个文件的步骤. 遇到的问

  • js操作两个json数组合并、去重,以及删除某一项元素

    两个json数组合并去重,以及删除某一项元素 let ha = [ {id:'H',name:'3'}, {id:'A',name:'6'}, {id:'B',name:'14'}, {id:'C',name:'60'} ]; let hb= [ {id:'H',name:'2'}, {id:'A',name:'6'}, {id:'B',name:'16'}, {id:'N',name:'2'}, {id:'C',name:'19'} ]; // 合并两个json数组,并去重; ha= Obje

随机推荐