我想读取两个excel表格,他们都有一组ID。表格A的属性X为空,表格B只有ID和X。对比两个表格的ID,如果相同则合并数据补全表格A中的X属性。
下面的代码是按照默认来的,默认数据都在sheet1的表格里
表格存储数据的顺序默认是 校园id-姓名-身份证号-性别
1.xls是包含上面四项数据的文档 2.xls是包含身份证和校园id 2项的文档
合并后的文档 在3.xls里
这些都可以在代码里修改,如果看不懂不会修改的话再给我留言吧
# 导入模块
import xlrd
import xlwt
def read_excel():
workbook1 = xlrd.open_workbook(r'1.xls')
workbook2 = xlrd.open_workbook(r'2.xls')
sheet1 = workbook1.sheet_by_name('Sheet1')
sheet2 = workbook2.sheet_by_name('Sheet1')
list1 = []
for i in range(sheet1.nrows - 1):
list1.append(sheet1.row_values(i + 1))
print(list1)
dict2 = {}
for i in range(sheet2.nrows - 1):
rows2 = sheet2.row_values(i + 1)
dict2[str(rows2[0])] = rows2[1]
print(dict2)
myWorkbook = xlwt.Workbook()
worksheet = myWorkbook.add_sheet('合并后')
worksheet.write(0, 0, label='校园ID')
worksheet.write(0, 1, label='姓名')
worksheet.write(0, 2, label='身份证号')
worksheet.write(0, 3, label='性别')
i = 1
for item in list1:
key = str(item[2])
if dict2[key]:
item[0] = dict2[key]
worksheet.write(i, 0, item[0])
worksheet.write(i, 1, item[1])
worksheet.write(i, 2, item[2])
worksheet.write(i, 3, item[3])
i = i + 1
myWorkbook.save('3.xls')
if __name__ == '__main__':
# 读取Excel
read_excel()
两种办法
#1
利用python的excel库去读写excel文件,如xlrd,xlwt
#2
将excel导出为csv,csv是文本格式,然后python直读写读文本,csv可以用excel打开
这个用pandas一个库就可以,而且只要5行代码
import pandas as pd
df1=pd.read_excel('你的 excel 文件1.xlsx',sheet_name='sheet1')
df2=pd.read_excel('你的 excel 文件2.xlsx',sheet_name='sheet1')
s = df2.set_index('id')['x']
df1['X'] = df1['id'].map(s).fillna(df1['name']).astype(str)
import pandas as pd
excel_a=pd.read_excel("表格A")
excel_b=pd.read_excel('表格B')
excel_c=pd.merge(excel_a,excel_b,on='ID')
print(excel_c) #输出结果
excel_c.to_excel('要保存的文件名称') #将结果保存