错误字符串索引必须是整数;使用列作为字典的值

2024-09-22 14:19:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在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']部分的问题,但没有找到问题所在


Tags: sampleinposgamepositionrandompointspts
1条回答
网友
1楼 · 发布于 2024-09-22 14:19:32

for stratum, position in strata.items():表示stratum将是键,position将是值。dict中的键是字符串,因此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)

我改变了什么:

  • dict的关键是位置本身:
  • 在迭代.items()时,我首先解压位置,然后再解压

相关问题 更多 >