如何使用 Python 将不同的 Excel 文件合并为一个新的 Excel 文件

how to merge to different excel files into one new excel file using python

提问人:SOURA ELLE 提问时间:11/4/2023 最后编辑:SOURA ELLE 更新时间:11/5/2023 访问量:102

问:

问题是我不能将它们全部合并

首先,在第一阶段,我要求用户给出其 excel 文件的两个路径,即 ExceloathH 和 ExcelpathL。因此,必须将这些添加到新的 excle 文件中 然后在 period2 中,2 个 excel 路径应该添加到新的 excel 文件中(在新文件中,它是 4 个 excel 文件的容器) 我想将这些文件合并到一个名为 sys_excel 的新 Excel 文件中

new_excel_by_user=str(input("write the name of your new EXCEL file:"))
user_excel = pd.ExcelWriter(new_excel_by_user+'.xlsx', engine='xlsxwriter')
sys_excel=pd.ExcelWriter('sys_excel11.xlsx', engine='xlsxwriter')

excel_list_H= []
excel_list_L=[]

for i in range(v):
   print("\npriod %d :"%(i+1))

   excelpathH=''+input(''+r"Insert your Excel path(HIGH):")
   excelpathL=''+input(''+r"Insert your Excel path(LOW):")
   excelpathH=excelpathH.replace('"', '')
   excelpathL=excelpathL.replace('"', '')
   dfH=pd.read_excel(os.path.join(excelpathH), engine='openpyxl' )
   dfL=pd.read_excel(os.path.join(excelpathL), engine='openpyxl' )
Python Pandas Excel 数据帧

评论


答:

0赞 Harsh Chitaliya 11/4/2023 #1
import os
import pandas as pd
data_file='filepath'
df=[]
for file in os.listdir(data_file):
  if file.endswith('.csv'):
   df.append(pd.read_csv(os.path.join(data_file,file)))
m_df=pd.concat(df,ignore_index=True)

m_df.to_excel("name.xlsx")

评论

1赞 SOURA ELLE 11/4/2023
我不希望它们被列出,我希望它们作为数据帧
0赞 Harsh Chitaliya 11/5/2023
它是 Elle @soura DataFrame
0赞 Tusher 11/4/2023 #2

您可以直接合并从 Excel 文件中读取的 DataFrame,而无需将它们存储在列表中。下面是代码的更新版本

import pandas as pd
import os

new_excel_by_user = str(input("Write the name of your new EXCEL file: "))

sys_excel = pd.ExcelWriter('sys_excel11.xlsx', engine='xlsxwriter')

merged_df_H = pd.DataFrame()
merged_df_L = pd.DataFrame()

for i in range(v):
    print("\nPeriod %d :" % (i+1))

    excelpathH = input("Insert your Excel path (HIGH): ")
    excelpathL = input("Insert your Excel path (LOW): ")

    excelpathH = excelpathH.replace('"', '')
    excelpathL = excelpathL.replace('"', '')

    dfH = pd.read_excel(os.path.join(excelpathH), engine='openpyxl')
    dfL = pd.read_excel(os.path.join(excelpathL), engine='openpyxl')

    merged_df_H = pd.concat([merged_df_H, dfH])
    merged_df_L = pd.concat([merged_df_L, dfL])

# Write merged dataframes to a new Excel file
with pd.ExcelWriter(new_excel_by_user + '.xlsx', engine='xlsxwriter') as user_excel:
    merged_df_H.to_excel(user_excel, sheet_name='High', index=False)
    merged_df_L.to_excel(user_excel, sheet_name='Low', index=False)

# Optionally, if you want to merge the data into 'sys_excel11.xlsx'
merged_df_H.to_excel(sys_excel, sheet_name='High', index=False)
merged_df_L.to_excel(sys_excel, sheet_name='Low', index=False)

sys_excel.save()

在这里,我只是直接将 Excel 文件合并到 和 数据帧中,而不使用中间列表。merged_df_Hmerged_df_L

评论

1赞 SOURA ELLE 11/4/2023
非常感谢,但有问题。它把所有 excel 文件都写在下面,我测量 excel2 位于 excel1 中的所有元素下
1赞 SOURA ELLE 11/4/2023
而且,我不想要多张纸,我希望它们都放在一张名为“Sheet1”的纸中,并且一个接一个地排列在列中
0赞 Tusher 11/4/2023
自己解决这个问题。如果没有,你将如何学习。
1赞 SOURA ELLE 11/4/2023
我尝试使用.transpose(),但它没有用
1赞 SOURA ELLE 11/4/2023
我修好了.....