zoukankan      html  css  js  c++  java
  • 使用pandas过滤文件重复行

    pandas过滤文件重复行

    import pandas as pd
    import os
    import argparse
    import random
    import string
    
    # 增加参数
    parser = argparse.ArgumentParser(
        description="过滤文件重复行,使用file_duplicate filename",add_help = True)
    
    parser.add_argument("filename", type=str,
                        help="请输入文件名,如filename.txt: ")
    
    parser.add_argument("-p","--param",dest = "sep", type=str,
                        help="请输入分隔符,如'|',默认为'|' " ,default = '|',required=False)
    args = parser.parse_args()
    f_name = args.filename  # 获得参数值
    sep = args.sep  # 获得参数值
    # usecols=[0,1,2]
    print('参数值为 {} {}'.format(f_name,sep))
    if not os.path.exists(f_name):
        print("%s文件不存在" % f_name)
    else:
        df = pd.read_csv(f_name, sep=sep,skiprows=1,header=None,usecols=[0,1,2])  # 指定字符串None为Nan
        """
        文件名,分隔符,忽略行数,首行是否索引,截取列
        """
        print("前5行")
        print(df.head(5))
        print('过滤前行列数')
        print(df.shape)  # 得到几行几列(637, 3)
        rowNum=df.shape[0] # 不包括df表头
        colNum=df.columns.size
        print('rowNum ={},colNum={}'.format(rowNum,colNum))
        # 查数据类型
        print(df.dtypes)
        # 数据类型转换
        df[0] = df[0].astype("object")
        df[1] = df[1].astype("object")
        print(df.dtypes)
    
        # drop_duplicats参数说明:
        #   参数subset
        #     subset用来指定特定的列,默认所有列
        #   参数keep
        #     keep可以为first和last,表示是选择最前一项还是最后一项保留,默认first
        #   参数inplace
        #     inplace是直接在原来数据上修改还是保留一个副本,默认为False
    
        df.drop_duplicates(subset=[0,1,2], keep='first',inplace=True)
        print('过滤后行列数')
        print(df.shape)# 得到几行几列(632, 3)
    
        # 生成csv文件
        f_new_name = "%s.new" % f_name + ''.join(random.sample(string.digits, 6))
        df.to_csv(f_new_name,sep='|',header=False ,index=False)
  • 相关阅读:
    『Python基础』第4节:基础数据类型初识
    『Python基础练习题』day02
    『Python基础』第1节 Windows环境下安装Python3.x
    Windows安装Mysql5.7.22
    jar 运行报错:找不到或无法加载主类
    linux 下的mysql 连接报错
    将本地Jar包安装到maven仓库中去
    Mysql 中的伪列用法
    Mysql 中的伪列用法1
    关于springboot中文件上传,properties配置
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/12425121.html
Copyright © 2011-2022 走看看