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

时间:2015-12-03 00:27:40

标签: python excel pandas xlrd xlwt

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

我有一大堆Excel工作簿都位于不同的目录中。我想查看这些.xlsx文件中的所有不同工作表,以查找特定标题,如" name"," team"和" xyz"的数量,并将带有这些标题的整个列复制到新的" Output.xlsx"工作簿,不同的床单。 (感兴趣的列可能分散在其他无关信息列之间,不同电子表格中的格式可能并不总是统一的)

问题是个人的相同名称和团队信息在这些电子表格中反复出现,但我正在寻找的数据(如游戏中的截击次数)随着时间的推移而变化,如电子表格已经完成了。

示例

game_1_stats.xlsx
 Player             Team    Handballs    Tackles   Marks    Kicks
 Luke Hodge         Hawthorn    20        8         10        5
 Andrew Mcleod      Crows      10         5          8        18
game_2_stats.xlsx
 Player             Team    Tackles   Fouls against Fouls for   Kicks
 Luke Hodge         Hawthorn    8         8         4           20
 Andrew Mcleod      Crows      5          1          1        11
game_3_stats.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
game_4_stats.xlsx
 Player             Team    Handballs    Tackles   Marks    Kicks
 Luke Hodge         Hawthorn    20        8         10        5
 Andrew Mcleod      Crows      10         5          8        18

所以如果这些" game_x_stats.xlsx"文件存储在2012年,2013年,2014年,2015年等不同的目录中,我只对 Tackles Kicks 数据感兴趣,我希望创建跟随Python

consolidated_historical_player_statistics.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)..........

我不确定Pandas或xlrd是否更适合这样做。我不需要运行任何真实的数学公式或分析这些数据,只需要复制一组与特定玩家相对应的不断变化的数据字段(如铲球和踢球)。 (并为多个玩家做到这一点 - 显然超过2个)

我有以下一些代码可以查看文件路径中的所有.xlsx文件夹"播放器统计信息",并且对于找到的每个spreasheet的每次迭代,它都打印出来具有"名称"的玩家列表头。

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

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")

我希望这不太通用,但我觉得这将是一个非常方便的代码片段,可以自动执行必须从各处复制和粘贴不同列的堆的过程 非常感谢!!!

0 个答案:

没有答案