使用Glob函数合并(CONCAT)每个N Excel文件中的每个excel文件

发布于 2025-02-11 23:24:07 字数 706 浏览 4 评论 0原文

我有一个包含1220个Excel文件的文件夹。 1220文件是305点的4个参数:

P1-a.xlsx 
P1-b.xlsx 
P1-c.xlsx 
P1-d.xlsx 
P2-a.xlsx 
P2-b.xlsx 
P2-c.xlsx 
P2-d.xlsx 
.
.
.
P305-a.xlsx 
P305-b.xlsx 
P305-c.xlsx 
P305-d.xlsx 

我有代码bellow将所有1220个文件合并为一个dataframe(final_df):

import os
import glob
import pandas
fileList=glob.glob("*.xlsx")
dfList=[]
for filename in fileList:
    print(filename)
    df = pandas.read_excel(filename, header=None)
    dfList.append(df)

Final_df=pandas.concat(dfList,axis=1)
Final_df.to_excel("Final.xlsx",index=None)

任何人都可以提出一种可以让我每4次脱颖而出的方法到P1到P305 ???

还是我可以每4次分组或concat的代码?哪个导致相同的结果?

另一个建议是,我从最终数据框架中提取每4列,并将其输出为单个数据框,从P1到P305?

I have a folder that contains 1220 excel files. The 1220 files are 4 parameters from 305 points for example:

P1-a.xlsx 
P1-b.xlsx 
P1-c.xlsx 
P1-d.xlsx 
P2-a.xlsx 
P2-b.xlsx 
P2-c.xlsx 
P2-d.xlsx 
.
.
.
P305-a.xlsx 
P305-b.xlsx 
P305-c.xlsx 
P305-d.xlsx 

I have the code bellow to merge all of 1220 files as one dataframe (Final_df):

import os
import glob
import pandas
fileList=glob.glob("*.xlsx")
dfList=[]
for filename in fileList:
    print(filename)
    df = pandas.read_excel(filename, header=None)
    dfList.append(df)

Final_df=pandas.concat(dfList,axis=1)
Final_df.to_excel("Final.xlsx",index=None)

Can anyone suggest a way that I can concat every 4 excels so that I have 305 final excels corresponding to P1 to P305 ???

Or a code that I can group or concat every 4 excels?? which lead to the same results?

Another suggestion is that I extract every 4 columns from the Final data frame and output it as a single dataframe named from P1 to P305??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的那么颓废 2025-02-18 23:24:07

您可以使用pathlibitertools模块将文件分组:

import pandas as pd
from itertools import groupby
from pathlib import Path

key = lambda x: x.stem.split('-')[0]
for name, files in groupby(sorted(Path('.').glob('*.xlsx'), key=key), key=key):
    df = pd.concat([pd.read_excel(file, header=None) for file in files])
    df.to_excel(f"{name}.xlsx", index=None)

You can group your files by prefix using pathlib and itertools module:

import pandas as pd
from itertools import groupby
from pathlib import Path

key = lambda x: x.stem.split('-')[0]
for name, files in groupby(sorted(Path('.').glob('*.xlsx'), key=key), key=key):
    df = pd.concat([pd.read_excel(file, header=None) for file in files])
    df.to_excel(f"{name}.xlsx", index=None)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文