我正在dataquest.io上练习编码,他们提供这些代码作为随机抽样的一种方式。
wnba['Pts_per_game'] = wnba['PTS'] / wnba['Games Played']
# Stratifying the data in five strata
stratum_G = wnba[wnba.Pos == 'G']
stratum_F = wnba[wnba.Pos == 'F']
stratum_C = wnba[wnba.Pos == 'C']
stratum_GF = wnba[wnba.Pos == 'G/F']
stratum_FC = wnba[wnba.Pos == 'F/C']
points_per_position = {}
for stratum, position in [(stratum_G, 'G'), (stratum_F, 'F'), (stratum_C, 'C'),
(stratum_GF, 'G/F'), (stratum_FC, 'F/C')]:
sample = stratum['Pts_per_game'].sample(10, random_state = 0) # simple random sapling on each stratum
points_per_position[position] = sample.mean()
position_most_points = max(points_per_position, key = points_per_position.get)我试着用以下的方式将地层编成字典来修改它。
wnba['Pts_per_game'] = wnba['PTS']/wnba['Games Played']
strata = {'stratum_F': wnba[wnba.Pos == 'F'],
'stratum_G': wnba[wnba.Pos == 'G'] ,
'stratum_C': wnba[wnba.Pos == 'C'] ,
'stratum_GF': wnba[wnba.Pos == 'G/F'] ,
'stratum_FC': wnba[wnba.Pos == 'F/C'] }
points_per_position = {}
for stratum, position in strata.items():
sample = stratum['Pts_per_game'].sample(10,random_state=0)
points_per_position[position]=sample.mean()
position_most_points=max(points_per_position,key= points_per_position.get)然而,我得到了TypeError: string indices must be integers。我试图绕过stratum['Pts_per_game']部分,但没有发现问题。
发布于 2019-06-28 13:49:11
for stratum, position in strata.items():意味着stratum将是一个键,position将是一个值。你的字典中的键是字符串,所以stratum是一个字符串
试试这个:
wnba['Pts_per_game'] = wnba['PTS']/wnba['Games Played']
positions = ['F', 'G', 'C', 'G/F', 'F/C']
strata = {position: wnba[wnba.Pos == position] for position in positions}
points_per_position = {}
for position, stratum in strata.items():
sample = stratum['Pts_per_game'].sample(10,random_state=0)
points_per_position[position]=sample.mean()
position_most_points=max(points_per_position,key= points_per_position.get)我改变了什么:
.items()时,我首先解压位置,然后解压分层。https://stackoverflow.com/questions/56808087
复制相似问题