Python 在多个 excel 中搜索相应的数据并粘贴到新的 excel 工作表
Python search corresponding data in multiple excel and paste to a new excel worksheet
我在一个文件夹中有一些 excel 个文件,每个文件中已经有一个工作表调用 "service"
Notes_111.xlsx
Notes_222.xlsx
Notes_888.xlsx
Workflow : 我想打开每个 .xlsx 文件,例如 Notes_111.xlsx,然后添加一个新的工作表,命名为 "code_city",然后根据文件名 111,仅从主数据框中提取 code = 111 数据并粘贴到新工作表。然后保存。
另一个excel文件中的示例主数据帧
code city
0 111 NY
1 111 CA
2 222 NJ
3 888 WE
4 888 TL
我不知道如何在循环中编写逻辑来搜索相应的数据
import pandas as pd
import numpy as np
import glob
from openpyxl import load_workbook
for f in glob.glob(path + "Notes_*.xlsx"):
wb = load_workbook(f)
ws = wb.create_sheet('code_city')
ws['A1'] = 'how to search corresponding data and paste here???'
wb.save(f)
请帮忙。
使用 pandas 它更容易操作,我相信它无论如何都在后台使用 openpyxl。
import glob
import pandas as pd
import os
for f in glob.glob('Notes_*.xlsx'):
dda = re.findall('\d+', f) #matches digits in the filename
df_each = pd.read_excel(f) # have to save the data first, coz ExcelWriter will clear up and create a new excel, so, you paste the saved data back to new sheet
df_1_dda = df_master[df_master['code'] == int(dda[0])] #select only those records with code in the filename
writer = pd.ExcelWriter(f)
df_each.to_excel(writer, 'service', index = False) # paste the saved data back to new sheet
df_1_dda.to_excel(writer, 'code_city', index = False)
writer.close()
希望对您有所帮助!
使用 python 3.6.4 Anaconda - 32 位
from openpyxl import load_workbook
for f in glob.glob("Notes_*.xlsx"):
code = re.findall('\d+', f) #matches digits in the filename
df_1_dda = df_master[df_master['code'] == int(code[0])] #select only those records with code from the master dataframe
#create new worksheet using openpyxl
wb = load_workbook(f)
ws = wb.create_sheet('code_city')
wb.save(f)
# reload the file and paste data I need
writer = pd.ExcelWriter(f)
df_1_dda.to_excel(writer, 'code_city')
writer.save()
我在一个文件夹中有一些 excel 个文件,每个文件中已经有一个工作表调用 "service"
Notes_111.xlsx
Notes_222.xlsx
Notes_888.xlsx
Workflow : 我想打开每个 .xlsx 文件,例如 Notes_111.xlsx,然后添加一个新的工作表,命名为 "code_city",然后根据文件名 111,仅从主数据框中提取 code = 111 数据并粘贴到新工作表。然后保存。
另一个excel文件中的示例主数据帧
code city
0 111 NY
1 111 CA
2 222 NJ
3 888 WE
4 888 TL
我不知道如何在循环中编写逻辑来搜索相应的数据
import pandas as pd
import numpy as np
import glob
from openpyxl import load_workbook
for f in glob.glob(path + "Notes_*.xlsx"):
wb = load_workbook(f)
ws = wb.create_sheet('code_city')
ws['A1'] = 'how to search corresponding data and paste here???'
wb.save(f)
请帮忙。
使用 pandas 它更容易操作,我相信它无论如何都在后台使用 openpyxl。
import glob
import pandas as pd
import os
for f in glob.glob('Notes_*.xlsx'):
dda = re.findall('\d+', f) #matches digits in the filename
df_each = pd.read_excel(f) # have to save the data first, coz ExcelWriter will clear up and create a new excel, so, you paste the saved data back to new sheet
df_1_dda = df_master[df_master['code'] == int(dda[0])] #select only those records with code in the filename
writer = pd.ExcelWriter(f)
df_each.to_excel(writer, 'service', index = False) # paste the saved data back to new sheet
df_1_dda.to_excel(writer, 'code_city', index = False)
writer.close()
希望对您有所帮助!
使用 python 3.6.4 Anaconda - 32 位
from openpyxl import load_workbook
for f in glob.glob("Notes_*.xlsx"):
code = re.findall('\d+', f) #matches digits in the filename
df_1_dda = df_master[df_master['code'] == int(code[0])] #select only those records with code from the master dataframe
#create new worksheet using openpyxl
wb = load_workbook(f)
ws = wb.create_sheet('code_city')
wb.save(f)
# reload the file and paste data I need
writer = pd.ExcelWriter(f)
df_1_dda.to_excel(writer, 'code_city')
writer.save()