请问merge如何才能一个脚本合并n个数据
各位大佬好,请问如何用merge合并多个execl文件。我只会用笨方法,感觉比较麻烦,能否有简单的方法,请赐教。
import pandas as pd
import numpy as np
import shutil
import os
from os import path
import xlwt
import openpyxl
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//201.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//202.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//203.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//204.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//205.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//206.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//207.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
df1 = pd.read_excel('E://计算数据//数据2月份.xlsx', index_col=0)
df2 = pd.read_csv('E://计算数据//208.csv', index_col=0,encoding='gb2312')
df = pd.merge(df1, df2, on='产品名称', how='left')
df.to_excel('E://计算数据//数据2月份.xlsx')
一直到月底,运行起来时间长,请赐教简单的方法,感谢。
可以使用循环和列表来简化你的代码。具体来说,你可以创建一个文件名列表,然后使用循环一次处理每个文件。下面是一个示例脚本:
import pandas as pd
import os
# 假设你需要合并的所有csv文件都在同一个文件夹中,并且文件名依次为"201.csv", "202.csv", ..., "208.csv"等
folder_path = 'E://计算数据//'
excel_file = '数据2月份.xlsx'
csv_files = # 根据你的实际情况修改
# 首先读取excel文件
df = pd.read_excel(os.path.join(folder_path, excel_file), index_col=0)
# 循环读取每个csv文件,并与excel文件进行合并
for csv_file in csv_files:
df2 = pd.read_csv(os.path.join(folder_path, csv_file), index_col=0, encoding='gb2312')
df = pd.merge(df, df2, on='产品名称', how='left')
# 将合并后的数据保存到excel文件中
df.to_excel(os.path.join(folder_path, excel_file))
这个脚本将大大简化你的代码,并提高了代码的可读性。希望这个答案对你有所帮助! isdkz 发表于 2023-6-19 16:21
可以使用循环和列表来简化你的代码。具体来说,你可以创建一个文件名列表,然后使用循环一次处理每个文件。 ...
首先谢谢大佬的解答,但这个答案不适合我。
我之前试过,假如每个循环不保存一次,再读取一次的话,每次的df都是原始的df。最后会出现原始的df+最后一个csv的内容。
而且文件名不知201到209,中间还得穿插其他文件,需要有顺序地读取写入。 skyhouse 发表于 2023-6-19 16:38
首先谢谢大佬的解答,但这个答案不适合我。
我之前试过,假如每个循环不保存一次,再读取一次的话,每 ...
isdkz他这个办法应该是可以的(你说你之前试过,估计不是他这样)。
而如果你的201-209这些文件有特定的(特别的顺序),那你可以手动写到一个列表里,或特定排序逻辑可以先sort排序一下。其他基本还是isdkz那样做。
ps: 如果方便可以上传csv等文件,让大家帮你试试。
阿奇_o 发表于 2023-6-19 21:21
isdkz他这个办法应该是可以的(你说你之前试过,估计不是他这样)。
而如果你的201-209这些文件有特 ...
可以了,谢谢
页:
[1]