尝试从Excel中获取子集

时间:2017-02-24 14:46:03

标签: python excel python-3.x xls xlrd

我正在尝试编写一个简单的程序,只是努力去做,因为我正在学习Python。

我有一个xlsx。它的格式为:

Team, Player

我想要做的是将过滤器应用于现场团队,然后从EACH团队中随机抽取10名玩家。

我是这样开始的:

import xlrd

# First open the workbook
wb = xlrd.open_workbook('C:\Users\ADMIN\Desktop\1.xlsx')

# Then select the sheet. 
sheet = wb.sheet_by_name('Sheet_1')

# Then get values of each column. Excuse first item which is header so skip that
team = sheet.col_values(0)[1:]
players = sheet.col_values(1)[1:]

然而,我有点被困在这里如何前进。

有人可以提供任何反馈/建议吗?

2 个答案:

答案 0 :(得分:2)

您可以构建一个由团队键入的字典,其值是这些团队中的玩家列表,然后从这些列表中进行抽样:

import random

teams = {}
for t,p in zip(team,players):
    if t in teams:
        teams[t].append(p)
    else:
        teams[t] = [p]

samples = [random.sample(teams[t],10) for t in teams]

答案 1 :(得分:1)

您可以使用filter功能 -

执行此操作
filtered_teams = filter(lambda x: x[0] > 2, zip(team, players))

您可以使用自己的过滤器替换lambda x: x[0] > 2,此处检查是否有任何x [0](或团队值)大于2。

现在假设这里的玩家是一个列表,你可以迭代filtered_teams

import random
print '\n'.join([random.sample(players, 10) for _, players in filtered_teams])

这不使用任何外部库,但使用pandas肯定会获得更好的性能。