zoukankan      html  css  js  c++  java
  • Python 去重csv文件中相同的重复行

    读取CSV

    • 读取CSV文件由两种方式:

    1. 第一种

    import csvwith open('data.csv','r',encoding = 'utf8') as fp:    reader = csv.reader(fp)    for row in reader:        print(row)
    1. 第二种

    import pandas as pd #需要导入pandas库df = pd.read_csv('data.csv')print(df)
     
     

    用pandas库的.drop_duplicates函数

    1 import shutil 2 import pandas as pd 3 4 5 frame=pd.read_csv('E:/bdbk.csv',engine='python') 6 data = frame.drop_duplicates(subset=['名称'], keep='first', inplace=False) 7 data.to_csv('E:/baike.csv', encoding='utf8')

    通常会分为两种情况,一种是去除完全重复的行数据,另一种是去除某几列重复的行数据,就这两种情况可用下面的代码进行处理。

    1. 去除完全重复的行数据

    • data.drop_duplicates(inplace=True)

    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表示生成一个副本。)

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

    DataFrame.drop_duplicates()中的参数完全实现。

    其中subset这个参数默认‘None’是指选择所有列,即所有列的值都相同我才认为这两行是重复的,

    也可以自定义为其中一部分列变量名,比如subset=['name','sex','age']。

    keep参数中'first'和‘last’会根据index的前后产生不同的效果。参数False会去除所有重复行。

    举个栗子:

            name       sex            age

    0    coco          female        7

    1      lily           female        7

    2     joe           male          15

    3     coco        female        7

     DataFrame.drop_duplicates(subset = None, keep = 'first'),产生的结果如下:

            name       sex         age

    0        coco    female         7

    1      lily         female        7

    2     joe         male          15

    若使用代码DataFrame.drop_duplicates(subset = None, keep = 'last'),结果如下:

            name       sex         age

    1      lily         female        7

    2     joe         male          15

    3      coco    female        7

    发现不考虑index以及行的顺序,效果与参数first相同。

    若使用代码DataFrame.drop_duplicates(subset = None, keep = False), 则把相同的行全部删除,结果如下:

            name       sex         age

    1      lily         female        7

    2     joe         male          15

    所有重复的行都被删除,没有保留。

    若使用代码DataFrame.drop_duplicates(subset = ['sex' , 'age'] , keep = False), 结果如下:

            name       sex         age

    2     joe         male          15

  • 相关阅读:
    在Ubuntu中通过update-alternatives切换软件版本
    SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具
    mongodb 的使用
    利用grub从ubuntu找回windows启动项
    How to Repair GRUB2 When Ubuntu Won’t Boot
    Redis vs Mongo vs mysql
    java script 的工具
    python 的弹框
    how to use greendao in android studio
    python yield的终极解释
  • 原文地址:https://www.cnblogs.com/tonyxiao/p/14397664.html
Copyright © 2011-2022 走看看