-
合并多个Excel文件并根据几个列,删除重复值,保留唯一值:
-
1.合并文件:
# 重要:安装xlrd时要安装以下这个!
# pip install xlrd==1.2.0
# pip install openpyxl
# pip install pandas
import os
import pandas as pd
import numpy as np
dir = "E:\\FilesFromOthers\\LY_Merge\\File" # 设置工作路径,读取其中的多个excel表
# 新建列表,存放文件名(可以忽略,但是为了做的过程能心里有数,先放上)
filename_excel = []
# 新建列表,存放每个文件数据框(每一个excel读取后存放在数据框)
frames = []
for root, dirs, files in os.walk(dir):
for file in files:
filename_excel.append(os.path.join(root, file))
# excel转换成DataFrame
df = pd.read_excel(os.path.join(root, file))
frames.append(df)
# 打印文件名
print(filename_excel)
# 合并所有数据
result = pd.concat(frames)
# 查看合并后的数据
result.head()
result.shape
# 合并文件输出
result.to_excel('E:\\FilesFromOthers\\LY_Merge\\Result\\MergedFile.xlsx', index=False)
- 删除重复值并得到非重复值文件,进行输出:
#! /usr/bin/python
# -*- coding: utf-8 -*-
# 根据商品编号来判断,如果上一行和下一行的这两列都相同那么删除重复的行,保留一行。
# 导入pandas包并重命名为pd
import pandas as pd
import sys
import importlib
import copy
if __name__ == '__main__':
importlib.reload(sys)
# 读取Excel中Sheet1中的数据 dtype = {"商品编号":str, "考核价":str, "裸价":str}
data = pd.DataFrame(pd.read_excel('E:\\FilesFromOthers\\LY_Merge\\Result\\MergedFile.xlsx', 'Sheet1', dtype=str))
# 查看读取数据内容
print(data)
# 查看是否有重复行
re_row = data.duplicated()
print(re_row)
# 查看去除重复行的数据
no_re_row = data.drop_duplicates()
print(no_re_row)
# 查看基于['考核价', '裸价']列去除重复行的数据
wp = data.drop_duplicates(subset = ['Latitude', 'Longitude', 'Altitude', 'Stand age', 'AGB', 'BGB', 'Longitude', 'Origin', 'Height', 'DBH'])
print(wp)
# 将去除重复行的数据输出到excel表中
wp.to_excel("E:\\FilesFromOthers\\LY_Merge\\Result\\Final-drop-duplicates.xlsx")
# 删除九个对应的 Latitude, Longitude, Altitude, AGB, BGB, Origin, Stand age, Height和DBH
- 输出为csv文件:
data3 = pd.DataFrame(pd.read_excel('E:\\FilesFromOthers\\LY_Merge\\Result\\Final-drop-duplicates.xlsx', 'Sheet1', dtype=str))
data3.to_csv('E:\\FilesFromOthers\\LY_Merge\\Result\\Final-drop-duplicates.csv')
-
原始文件:
-
合并后的文件:
- 删除了重复值后的文件:









网友评论