我有以下任务,我希望得到一些帮助。 我使用的是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")
我希望这不太通用,但我觉得这将是一个非常方便的代码片段,可以自动执行必须从各处复制和粘贴不同列的堆的过程 非常感谢!!!