我正在尝试编写一个简单的程序,只是努力去做,因为我正在学习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:]
然而,我有点被困在这里如何前进。
有人可以提供任何反馈/建议吗?
答案 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肯定会获得更好的性能。