码迷,mamicode.com
首页 > 其他好文 > 详细

使用pandas过滤文件重复行

时间:2020-03-06 10:44:39      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:first   ade   忽略   type   argument   esc   数据类型转换   size   修改   

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)

 

使用pandas过滤文件重复行

标签:first   ade   忽略   type   argument   esc   数据类型转换   size   修改   

原文地址:https://www.cnblogs.com/xiao-apple36/p/12425121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!