精华内容
下载资源
问答
  • 查询LSCJMB表F_CJZY对应重复数据: SELECT F_CJZY,COUNT(F_CJZY) FROM LSCJMB GROUP BY F_CJZY HAVING COUNT( F_CJZY )>1 查出了重复重复行数: 删除全部涉及重复数据: delete from ...

    查询LSCJMB表中F_CJZY对应列值重复的数据:

    SELECT F_CJZY,COUNT(F_CJZY) FROM LSCJMB GROUP BY F_CJZY HAVING COUNT( F_CJZY )>1

    查出了重复的列及重复行数:

    删除全部涉及重复的数据:
    delete from LSCJMB where F_CJZY in(SELECT F_CJZY,COUNT(F_CJZY) FROM LSCJMB GROUP BY F_CJZY HAVING COUNT( F_CJZY )>1);

    需要保存某一列,然后删除剩余的列的话,用如下sql,删除了输了F_GUID最大列以外的所有数据。可以当作是 ID 最大的列。
    delete from LSCJMB where F_GUID not in(select t.F_GUID1 from (select max (a.F_GUID) F_GUID1 from LSCJMB a group by a.F_CJZY)as t );

    展开全文
  • Python按照某些去重

      
    Python按照某些列去重,可用drop_duplicates函数轻松处理。本文致力用简洁的语言介绍该函数。
      


      

    一、drop_duplicates函数介绍

      
    drop_duplicates函数可以按某列去重,也可以按多列去重。具体语法如下:

    DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)
    

    代码解析:
      
    DataFrame:待去重的数据框。

    subset:用来指定特定的列,根据指定的列对数据框去重。默认值为None,即DataFrame中一行元素全部相同时才去除。

    keep:对重复值的处理方式,可选{‘first’, ‘last’, ‘False’}。默认值first,即保留重复数据第一条。若选last为保留重复数据的最后一条,若选False则删除全部重复数据。

    inplace:是否在原数据集上操作。默认值False,即把原数据copy一份,在copy数据上删除重复值,并返回新数据框(原数据框不改变)。值为True时直接在原数据视图上删重,没有返回值。

      

    二、加载数据

      
    加载有重复值的数据,并展示数据。

    # coding: utf-8
    import os             #导入设置路径的库
    import pandas as pd  #导入数据处理的库
    import numpy as np   #导入数据处理的库
    
    os.chdir('F:/微信公众号/Python/26.基于多列组合删除数据框中的重复值')  #把路径改为数据存放的路径
    name = pd.read_csv('name.csv',sep=',',encoding='gb18030')
    name
    

    得到结果:
    在这里插入图片描述
    :后文所有的数据操作都是在原始数据集name上进行。

      

    三、按照某一列去重

      

    1. 按照某一列去重(参数为默认值)

    按照name1对数据框去重。

    new_name_1 = name.drop_duplicates(subset='name1')
    new_name_1
    

    得到结果:
    在这里插入图片描述

      从结果知,参数为默认值时,是在原数据的copy上删除数据,保留重复数据第一条并返回新数据框。感兴趣的可以打印name数据框,删重操作不影响name的值。
      

    2. 按照某一列去重(改变keep值)

    2.1 实例一(keep=‘last’)

    按照name1对数据框去重,并设置keep=‘last’。

    new_name_1 = name.drop_duplicates(subset='name1',keep='last')
    new_name_1
    

    得到结果:
    在这里插入图片描述

      从结果知,参数keep=‘last’,是在原数据的copy上删除数据,保留重复数据最后一条并返回新数据框,不影响原始数据框name。
      
    2.2 实例二(keep=False)

    按照name1对数据框去重,并设置keep=False。

    new_name_2 = name.drop_duplicates(subset='name1',keep=False)
    new_name_2
    

    得到结果:
    在这里插入图片描述

    从结果知,参数keep=False,是把原数据copy一份,在copy数据框中删除全部重复数据,并返回新数据框,不影响原始数据框name。
      

    3. 按照某一列去重(inplace=True)

      
    按照name1去重,并设置inplace=True

    new_name_3 = name.drop_duplicates(subset='name1',inplace=True)
    new_name_3
    

    结果中new_name_3的值为空,即设置inplace=True时没有返回结果,是在原始数据框name上直接进行操作。打印name可得结果:
    在这里插入图片描述

    结果和按照某一列去重(参数为默认值)是一样的。如果想保留原始数据框直接用默认值即可,如果想直接在原始数据框删重可设置参数inplace=True
      

    四、按照多列去重

      
    对多列去重和一列去重类似,只是原来根据一列是否重复删重。现在要根据指定的列判断是否存在重复(顺序也要一致才算重复)删重。接下来看一个实例:

    new_name = name.drop_duplicates(subset=['name1','relation'])
    new_name
    

    得到结果:
    在这里插入图片描述
      原始数据中只有第二行和最后一行存在重复,默认保留第一条,故删除最后一条得到新数据框。想要根据更多列数去重,可以在subset中添加列。如果不写subset参数,默认值为None,即DataFrame中一行元素全部相同时才去除。

      从上文可以发现,在Python中用drop_duplicates函数可以轻松地对数据框进行去重。但是对于两列中元素顺序相反的数据框去重,drop_duplicates函数无能为力。如需处理这种类型的数据去重问题,参见基于多列组合删除数据框中的重复值
      
    你可能感兴趣:
    用Python绘制皮卡丘
    用Python绘制词云图
    Python画好看的星空图(唯美的背景)
    Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

    长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。
    展开全文
  • 用Python实现基于多组合删除数据重复

      
      最近公司在做关联图谱的项目,想挖掘团伙犯罪。在准备关系数据时需要根据两列组合删除数据框中的重复值,两列中元素的顺序可能是相反的。我们知道Python按照某些列去重,可用drop_duplicates函数轻松处理。详见【Python】基于某些列删除数据框中的重复值。但是对于两列中元素顺序相反的数据框去重,drop_duplicates函数无能为力。

      Python中有多种方法可以处理这类问题。一种是写循环依次判断是否重复删重,另一种是用本公众号文章:Python中的集合提到的frozenset函数,一句语句解决该问题。循环太过繁琐,而且速度较慢。本文介绍一句语句解决多列组合删除数据框中重复值的问题。

      


      

    一、举一个小例子

      
      在Python中有一个包含3列的数据框,希望根据列name1和name2组合(在两行中顺序不一样)消除重复项。原始数据如下:

    在这里插入图片描述

      希望得到结果:

    在这里插入图片描述
      

      这就是本文要解决的问题,接下来分享准备关系数据时的实例。
      

    二、基于两列删除数据框中的重复值

    1. 加载数据

    # coding: utf-8
    import os             #导入设置路径的库
    import pandas as pd  #导入数据处理的库
    import numpy as np   #导入数据处理的库
    
    os.chdir('F:/微信公众号/Python/26.基于多列组合删除数据框中的重复值')  #把路径改为数据存放的路径
    df = pd.read_csv('relation.csv',sep=',',encoding='gb18030')
    df.head()
    

      注:由于数据涉及安全问题,本文数据已经过处理。如需数据实现本文代码,请到“阿黎逸阳的代码”公众号中回复:“基于多列删重”,可免费获取。得到结果:

    在这里插入图片描述
      
      由于原始数据是从hive sql中跑出来,表示商户号之间关系的数据,merchant_r和merchant_l中存在组合重复的现象。现希望根据这两列组合消除重复项。打印原始数据行数:

    print(df.shape)
    

    得到结果:

    (130, 3)
    

      由于每两行中有一行是重复的,希望数据处理后得到一个65行3列的去重数据框。

      

    2. 具体实现代码及解析

    2.1 具体代码
    df_final = df[~df[['merchant_r', 'merchant_l']].apply(frozenset, axis=1).duplicated()]
    print(df_final.shape)
    

    得到结果:

    (65, 3)
    
    2.2 代码解析

    df[['merchant_r', 'merchant_l']]:从df中取出待组合删重的两列。

    apply(frozenset, axis=1):把取出两列中的行当做变量依次传到frozenset函数中去。

    frozenset:冻结集合,不可变,存在哈希值。经过这个函数就可以解决两行中值的顺序不一致问题。因为集合是无序的,只要值相同不用考虑顺序。

    duplicated():判断变成冻结集合的列是否存在重复值,若存在标记为True。

    ~:取反操作,把FALSE变成True,True变成False。相当于保留第一行,把其余重复行删除。
      

    3. 拆分代码并展示结果

      
    拆分代码1:

    df[['merchant_r', 'merchant_l']].apply(frozenset, axis=1)
    

    得到结果:
    在这里插入图片描述

    拆分代码2:

    df[['merchant_r', 'merchant_l']].apply(frozenset, axis=1).duplicated()
    

    得到结果:
    在这里插入图片描述

    4. 做一个小实验

      
    如果仅仅变成无序集合,set函数也可以做到。我们来看下用set替换frozenset是否可行。

    df_cs = df[~df[['merchant_r', 'merchant_l']].apply(set, axis=1).duplicated()]
    

    得到结果:

    在这里插入图片描述

    从上图可以看出用set替换frozense会报不可哈希的错误。
      

    三、把代码推广到多列

      
      解决多列组合删除数据框中重复值的问题,只要把代码中取两列的代码变成多列即可。下面分享一个实例:

    1. 加载数据

    # coding: utf-8
    import os             #导入设置路径的库
    import pandas as pd  #导入数据处理的库
    import numpy as np   #导入数据处理的库
    
    os.chdir('F:/微信公众号/Python/26.基于多列组合删除数据框中的重复值')  #把路径改为数据存放的路径
    name = pd.read_csv('name.csv',sep=',',encoding='gb18030')
    name
    

    得到结果:
    在这里插入图片描述

    2. 多列去重实现代码

    name_final = name[~name.apply(frozenset, axis=1).duplicated()]
    name_final
    

    得到结果:
    在这里插入图片描述

      本文是我在工作中碰到的问题,发现用循环解决特别麻烦。而用frozenset函数配合其它函数代码特别简洁,故分享给更多有需要的朋友。本文有偏颇的地方欢迎指正。

    参考文献

    https://zhuanlan.zhihu.com/p/30116307
    https://zhuanlan.zhihu.com/p/43492827
    https://zhuanlan.zhihu.com/p/59137998
    https://zhuanlan.zhihu.com/p/111260930
    https://baijiahao.baidu.com/s?id=1639202882632470513&wfr=spider&for=pc
    

    你可能感兴趣:
    用Python绘制皮卡丘
    用Python绘制词云图
    Python画好看的星空图V2版——添加背景图片和音乐

    长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。
    展开全文
  • (1)查询某一列重复记录 语句: SELECT Name FROM dbo.Member t WHERE Name IN (SELECT Name FROM dbo.Member GROUP BY Name HAVING COUNT(Name)>1 ) ORDER BY t.Name 查询结果: (2)查询某一列不重复的...

     

    数据库测试表dbo.Member

    一、单列重复

    一,带有having条件的分组查询方法

    (1)查询某一列重复记录

    语句:

     SELECT  Name FROM  dbo.Member t WHERE Name IN (SELECT Name FROM dbo.Member GROUP BY Name HAVING COUNT(Name)>1 ) ORDER BY t.Name

    查询结果:

    (2)查询某一列不重复的记录

    语句:

    SELECT * FROM dbo.Member WHERE ID  IN (SELECT MIN(ID) FROM dbo.Member GROUP BY Name)

    查询结果:

    (3)清除某一列重复的数据

    语句:

     DELETE FROM dbo.Member WHERE ID NOT IN (SELECT MIN(ID) FROM dbo.Member GROUP BY Name)

    执行结果:

    解释:上面的例子只保存了各自Name的最小值。

    二,DISTINCT 的用法

    温馨提醒:
    不支持多列统计
    Oracle和DB2数据库也适用

    利用distinct关键字返回唯一不同的值

    (1)查询某一列不重复数据

    语句:

     SELECT DISTINCT Name FROM dbo.Member

    结果集:

    (2)DISTINCT 查询多列不重复(如果查询的列有任何一个不重复,则这条记录视为不重复)

    语句:

    SELECT DISTINCT Name,Uid FROM dbo.Member
    查询结果

    DISTINCT 用于统计
    
    语句
     SELECT COUNT(DISTINCT(Name)) FROM dbo.Member

     二、多列重复

     

    数据表结构

    查找Original_ID和Match_ID这两列值重复的行

    SQL语句

    SELECT m.* FROM dbo.Match m,(
    SELECT Original_ID,Match_ID
    FROM dbo.Match 
    GROUP BY Original_ID,Match_ID
    HAVING COUNT(1)>1
    
    ) AS m1
    WHERE m.Original_ID=m1.Original_ID AND m.Match_ID=m1.Match_ID

     

    查询结果

     

     
    展开全文
  • pandas删除列中重复的行

    千次阅读 2019-04-15 19:32:47
    mydf = mydf.drop_duplicates(subset='列名') subset参数指定具体
  • 删除excel某一重复

    千次阅读 2018-09-30 21:07:45
    在给图片打标签的过程,需要提取数据集excel表的标签。 有大量重复项,用python程序解决了这个小问题。 一、提取下表I列中的所有菜肴标签   二、代码 二、代码 import xlrd def open_excel(fileName=...
  • 一张表有id和name 两个字段,查询出name重复的所有数据,现在下: select * from xi a where (a.username) in ...2、查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先下: select c...
  • csv数据根据某一内容删除重复

    千次阅读 2019-10-11 19:16:12
    利用Python爬虫获取了csv格式的数据,但数据每一行有重复内容,需要把含有重复项的整行删除掉,按照某的内容删除重复行(按照整行同理),代码如下(按照自己的路径修改代码路径即可): import csv if __...
  • 相信大家在实际开发在数据库方面都遇到过很多重复数据的问题,今天就和大家谈谈关于删除重复数据的方法,为了更加直观的和更容易的掌握方法我就从建表开始到插入重复数据删除重复数据的核心sql语句给大家演示。...
  • 删除数据,并保留一条,保留的是伪rowid最小的一条数据,如果有其他的需求,可以稍微自己改一改就可以保留自己要想的数据 。 delete from table_name a where a.name in (select name from table_name group by ...
  • 由于网络阻塞,高并发造成生产环境下数据库数据重复!!! #所有的去重是将表多于的记录去重 只有一条的保留 多条重复记录的话只保留ID最小的一个 #userrecoder表的SQL去重 userrecoder学生使用记录表,多个字段,...
  • sql删除中重复记录 This article explains the process of performing SQL delete activity for duplicate rows from a SQL table. 本文介绍了对SQL表重复行执行SQL删除活动的过程。 介绍 (Introduction...
  • 删除Linux文件重复数据 uniq

    千次阅读 2018-08-02 10:01:50
    -c或--count:在每旁边显示该行重复出现的次数 -d或--repeated:仅显示重复出现的行列; -f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位; -s<字符位置>或--...
  • mysql删除重复字段并保留一条
  • 假设我们有 “表1” 这样一个数据,需要删除A重复行,同时保留重复B最大值所在的行,即需要得到 “表2” 的结果。 table = pd.DataFrame({"A":["甲", "乙", "甲", "甲"], "B":[2,2,3,4]}) table 表1: ...
  • SQLServer 删除重复数据 1、根据HXM字段查询表重复的数据 select HXM from T_contract_trading_inquiry_Ht where FKSQ_ID=’” + fksq_id + “’ group by HXM having count(HXM) &amp...
  • SQLServer 删除重复数据

    千次阅读 2017-08-03 19:06:36
    3、如果表没有唯一值的,可以通过 ROW_NUMBER()函数来删除重复数据  重复执行插入脚本,查看表数据,表没有唯一值 Delete T From (Select Row_Number() Over(Partition By [Name] order ...
  • Mysql查询字段去除指定列重复数据

    千次阅读 2020-12-06 22:54:15
    Distinct关键字主要用来在SELECT查询记录根据某指定字段的值去除重复记录 SELECT DISTINCT [字段名] FROM [表名] WHERE [检索条件字句] eg: select distinct name from user_info;
  • 一般的后台程序基本上都会遇到和数据库交互的情况,在这种情况里面又会碰到数据库表数据的去重需求,鉴于此,我把自己在项目遇到的情况做了一个...查询表单列重复 一.带有having条件的分组查询方法 (1)查询某
  • oracle 使用rowid删除重复数据

    千次阅读 2018-06-04 20:04:35
    这个方法会用到了rowid,下面简单介绍一下rowid的定义1、ROWID定义ROWID:数据库中行的全局唯一地址对于数据中的每一行,rowid伪返回行的地址。rowid值主要包含以下信息:对象的数据对象编号该行所在的数...
  • 作用是踢除重复数据其中一个_id,让后面的删除语句不会删除所有数据 4.使用forEach循环根据_id删除数据 $addToSet 操作符只有在值没有存在于数组时才会向数组添加一个值。如果值已经存在于数组,$addToSet...
  • 7、python数据重复值的查找和删除

    千次阅读 2018-11-28 19:50:19
    1 找出重复的位置 index=df.duplicated() ## 根据某些找出重复的...## 根据返回值,把重复数据提取出来 df[index] 2 直接删除重复值 # 默认根据所有的进行删除,直接调用,一步到位 newDF=df.drop_du...
  • 如何删除mysql数据库的重复数据

    千次阅读 2018-01-04 12:30:31
    1 首先利用sql查到你所需要的不重复数据 select *, count(distinct title) from cms_article group by title 2 然后在navicat中将其复制成插入语句 这时候问题出来了,因为所插入的sql中中有一个多余字段 ...
  • Oracle 删除同一张表中重复数据

    千次阅读 2016-06-11 22:31:31
    一、部分字段重复数据删除 CREATE TABLE 临时表 AS (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1) delete from 表名 a where 字段1,字段2 in (select 字段1,字段2...
  • mysql数据库表中删除某一重复的全部行和只留一条 原创 2013年10月16日 00:29:34 4473 (1)mysql 数据库中删除某一重复的全部行(一个笔试题) 如果要求是多个字段重复的...
  • 在此数据中,很少有在“备注”中包含NaN。 Python对没有任何值/文本的单元格显示NaN。 import pandas as pd data = pd.read_excel('C:\Temp\data.xlsx') print(data) In the output, we also see index values ...
  • pandas通常在读取excel数据之后,如果需要进行去重,有两种...(1)使用drop_duplicates(subset=None, keep=‘first’, inplace=False)删除重复项 参数解释: Parameters ---------- subset : column label or se...
  • oracle查找/删除重复数据(单个字段和多个字段条件) 单个字段: --查找重复的全部数据(单个字段) 思路: 1.根据字段tid分组,数量大于1的表示tid字段有重复数据; 2.根据1查询出来的tid数据为条件,再查询全部...
  • Q:DataFrame删除重复列,如下图,对于Sex_female,保留其中一S:解决办法:holdout_deal=holdout[columns].T.drop_duplicates().T 对其转置,再使用drop_duplicates()函数,即可转载请注明出处...
  • Oracle如何删除中重复记录

    万次阅读 2018-01-04 18:29:37
    在对数据库进行操作过程我们可能会遇到这种情况,表数据可能重复出现,使我们对数据库的操作过程带来读诸多不便,那么怎么删除这些重复没有用的数据呢? 平时工作可能会遇到当试图对库表的某一或几列...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 330,913
精华内容 132,365
关键字:

删除列中重复的数据