Python 尝试从Excel中获取子集

Python 尝试从Excel中获取子集,python,excel,python-3.x,xls,xlrd,Python,Excel,Python 3.x,Xls,Xlrd,我正在尝试编写一个简单的程序,只是在学习Python的过程中努力做到这一点 我有一个xlsx。其格式如下: Team, Player 我想做的是对现场团队应用一个过滤器,然后从每个团队中随机抽取10名球员的子集 我是这样开始的: import xlrd # First open the workbook wb = xlrd.open_workbook('C:\Users\ADMIN\Desktop\1.xlsx') # Then select the sheet. sheet = wb.

我正在尝试编写一个简单的程序,只是在学习Python的过程中努力做到这一点

我有一个xlsx。其格式如下:

Team, Player
我想做的是对现场团队应用一个过滤器,然后从每个团队中随机抽取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:]
然而,我有点被困在如何继续这里


有人能提供任何反馈/建议吗

您可以使用
过滤器
功能-

filtered_teams = filter(lambda x: x[0] > 2, zip(team, players))
您可以用自己的过滤器替换
lambda x:x[0]>2
,在这里检查任何x[0](或团队值)是否大于2

现在假设这里的玩家本身就是一个列表,您可以迭代
filtered\u团队

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

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

您可以构建一个由团队键入的字典,其值是这些团队中的球员列表,然后从这些列表中采样:

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]

看一看这是伟大的,为所花的时间来回答道歉-我正在查找和理解键词典。我现在明白了,它是基于团队将数据放入桶中并从中打印出来的。最后一行是索引到球队列表中,随机抽取10名球员,对吗?我把最后一行改成了打印“团队,玩家”,比如->示例=[teams[t]+random.sample(teams[t],1)for t in teams]我相信这是可行的!谢谢你:D你能提供一些关于如何处理球队少于10名球员的情况的帮助吗?当它失败时:)@SimonKiely
random.sample(团队[t],min(10,len(团队[t]))
不会抛出错误。它将在少于10小时时选择所有玩家,谢谢。我遇到了一些稍有不同的错误。我在这里发布了一个新问题,提供了更多详细信息-。谢谢你的帮助,非常有用,并从字典的使用中学到了很多。