如何将多个Excel工作簿中的多个列复制到单个合并工作簿中

2024-09-27 21:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下的任务,我希望能得到一些帮助。 我使用的是Python,无法决定xlrd&xlwt和Pandas哪个更有用。(或者如果最后有人对更好的编程语言有建议,请继续)

我有一大堆Excel工作簿,都放在不同的目录下。我想在这些.xlsx文件中查看所有不同的工作表,找出诸如“name”、“team”和“number of xyz”等特定的标题,并将带有这些标题的整个列复制到一个新的输出.xlsx“工作簿,具有不同的工作表。 (感兴趣的列可能分散在其他无关信息列之间,不同电子表格中的格式可能并不总是统一的)

问题是,相同的名字和球队信息在这些电子表格中一遍又一遍出现,但是我要找的数据(比如比赛中的铲球次数)会随着时间的推移而变化,因为电子表格已经制作好了。在

示例

游戏1_统计.xlsx
 Player             Team    Handballs    Tackles   Marks    Kicks
 Luke Hodge         Hawthorn    20        8         10        5
 Andrew Mcleod      Crows      10         5          8        18
游戏2_统计.xlsx ^{pr2}$ 游戏3_统计.xlsx
 Player             Team         Kicks   Goals Behinds Marks Tackles
 Andrew Mcleod      Crows          16      7      4     8      3
 Shane Woewodin     Collingwood    0       0      0     0      0
 Luke Hodge         Hawthorn       25      2      1     9      5
游戏4_统计.xlsx
 Player             Team    Handballs    Tackles   Marks    Kicks
 Luke Hodge         Hawthorn    20        8         10        5
 Andrew Mcleod      Crows      10         5          8        18

所以如果这些“游戏”_统计.xlsx“2012年、2013年、2014年、2015年等的文件存储在不同的目录中,我只对攻势数据感兴趣,我希望用Python创建以下内容

整合的历史玩家_统计.xlsx
 Year                             2012          2013         2014        2015
 Player             Team    Tackles Kicks Tackles Kicks  Tackles Kicks   Tackles Kicks
 Luke Hodge         Hawthorn    5   20         0   8       10    30         3    15
 Andrew Mcleod      Crows       .........................(same as above)..........

我不确定熊猫和xlrd是否更适合这样做。我不需要运行任何真正的数学公式,也不需要对这些数据进行分析,只需要复制一个变化数据字段的一整串列(比如铲球和踢),它们对应于一个特定的球员。(对多个玩家这样做-显然不止2个)

我有下面的代码,它查看文件路径“Player Statistics”中的所有.xlsx文件夹,对于找到的单个spreasheet的每次迭代,它都会打印出带有“name”头的播放器列表。在

但我想做的是寻找多个列标题,而不是打印出来,我想写一个新的电子表格。在

import xlrd
import xlwt

path_with_multiple_directories_and_documents = "C:/Software"
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('Consolidated player statistics')

for root, dirs, files in os.walk(path_with_multiple_directories_and_documents):
     xlsfiles = [ _ for _ in files if _.endswith('xlsx')]
     for xlsfile in xlsfiles:
         workbook = xlrd.open_workbook(os.path.join(root,xlsfile))
         for worksheet in workbook.sheets():
             for row in range(worksheet.nrows):
                 if worksheet.row_values(row)[0] == 'name':
                     print("This should be a printed list of the Player Names found in this document \n")
                     cv = worksheet.col_values(row)
                     print(cv,"\n")

我希望这不是太通用,但我觉得这将是一个非常方便的代码块,可以自动复制和粘贴来自各地不同列的堆的过程 谢谢!!!在


Tags: in游戏forxlsxteam电子表格workbookhodge

热门问题