#求帮助#python批量处理excel#指定行列提取合并#
已知条件:同一文件夹(路径:F:\excel表汇总) 下若干个不同名称的excel表:表1.xlsx、表2.xlsx……
打开后的格式如下:
每个excel表打开后均相同,即黄色背景区域的标题和内容均相同, 仅有count、area、sum列下的数值不同
现在需要完成以下操作:
1.将所有excel表中第三列的内容(除列标题)进行提取,在新表中以行的形式合并(所处位置为第二列和第三列)
2.选择任意一个表的第二列作为合并所有内容后的列标题,excel表的名称作为合并所有内容后表的行标题
即达到效果如下
虽然题主是希望用python操作,但我与题主一样是arcmap的使用者,也常操作类似问题,考虑题主已经导出来excel,这里提供我的操作方法,直接Excel合并,点点鼠标,一分钟搞定。优势在于不用安装各种库,而且能在任何有Excel的电脑操作。
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
思路:
代码实现如下:
import os
import pandas as pd
# 定义文件夹路径
folder_path = "F:\\excel表汇总"
# 定义列表存储第三列的内容
data = []
# 遍历文件夹下的所有excel文件
for file_name in os.listdir(folder_path):
if file_name.endswith(".xlsx"):
file_path = os.path.join(folder_path, file_name)
# 打开excel文件
excel_file = pd.read_excel(file_path)
# 读取第三列的内容
col_data = list(excel_file.iloc[:, 2])[1:]
# 存储到data列表中
data.append((file_name, col_data))
# 合并所有列表中的内容到一个新的列表中
merged_data = []
for item in data:
for value in item[1]:
merged_data.append((item[0], value))
# 转化为字典
dict_data = {}
for item in merged_data:
if item[0] not in dict_data:
dict_data[item[0]] = []
dict_data[item[0]].append(item[1])
# 转化为DataFrame
df = pd.DataFrame(dict_data)
# 将第二列作为列标题
df.columns = list(df.iloc[0, :])
df = df.iloc[1:, :]
# 将DataFrame写入新的excel文件中
df.to_excel(os.path.join(folder_path, "merged.xlsx"), index=False)
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
以下是代码实现:
import os
import openpyxl
# 获取文件夹下所有excel文件的路径
path = r'F:\excel表汇总'
file_list = [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.xlsx')]
# 创建新的excel表格
new_wb = openpyxl.Workbook()
new_ws = new_wb.active
new_ws.title = '合并表格'
# 将第二列的标题写入新表格
col_2_title = ''
for file in file_list:
wb = openpyxl.load_workbook(file)
ws = wb.active
if col_2_title == '':
col_2_title = ws.cell(row=1, column=2).value
new_ws.cell(row=1, column=2, value=col_2_title)
else:
assert col_2_title == ws.cell(row=1, column=2).value, '第二列的标题不一致'
# 从每个表格中提取第三列的内容,并将结果写入新表格
row = 2 # 新表格从第二行开始写入数据
for file in file_list:
wb = openpyxl.load_workbook(file)
ws = wb.active
for i in range(2, ws.max_row + 1):
value = ws.cell(row=i, column=3).value
new_ws.cell(row=row, column=2, value=file.split('\\')[-1].split('.')[0])
new_ws.cell(row=row, column=3, value=value)
row += 1
# 保存新表格
new_wb.save(os.path.join(path, '合并表格.xlsx'))
代码步骤解释:
.xlsx
结尾的文件路径。合并表格
。注意事项: