使用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) 相关推荐
三石 2020-10-30
roamer 2020-10-29
三石 2020-10-29
wangquannuaa 2020-10-15
wangquannuaa 2020-09-29
jzlixiao 2020-09-15
wangquannuaa 2020-08-30
三石 2020-08-23
逍遥友 2020-08-21
jzlixiao 2020-08-18
wangquannuaa 2020-08-17
QianYanDai 2020-08-16
cjsyrwt 2020-08-14
jzlixiao 2020-07-29
xirongxudlut 2020-07-20
mmmjyjy 2020-07-16
QianYanDai 2020-07-05
QianYanDai 2020-07-05
june0 2020-07-04