Python 数据处理之字段去重

在之前遇到的数据中,由于同一部件的可替换不同产品,造成了同一行出现了2次及以上同样的字段和属性值,而只需要其中的一个以及对应值即可,此文记录下处理的过程。

一番分析后,整理了如下的思路来清理重复字段:

  1. 循环读取每一行
  2. 分散成数组
  3. 循环判断索引大于5的元素
  4. para[n] == para[n-2]时表示当前字段重复
  5. 同时跳过重复字段的值

Python 代码实现

import getopt, sys

def go(file_name):
	f = open(file_name, 'r')
	result = list()
	for line in open(file_name):
		line = f.readline()
		para = line.split(",")
		new_line = ""
		dump_line = 0
		for index in range(len(para)):
			if(index <= 5):
				new_line = new_line + para[index] +","
				continue
			else:
				if(para[index] == para[index-2]):
					dump_line = index
					continue
				elif(dump_line == index -1):
					continue
				else:
					new_line = new_line + para[index] +","
		print new_line
		result.append(new_line)
	f.close()                
	open(file_name+'-fix.csv', 'w').write('%s' % '\n'.join(result))

if __name__ == '__main__':
	file_name = sys.argv[1]
	go(file_name)

执行命令 python fix.py 文件名
将得到处理后的文件 文件名-fix.csv

看着文件大小骤减40%,如释重负的感觉:)