2025年3月27日 星期四 甲辰(龙)年 月廿六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

使用pandas过滤文件重复行

时间:09-13来源:作者:点击数:42

使用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)

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门